操作Excel ,使用第三方庫,使用別人寫好的代碼,
這是使用 openpyxl 操作 2010 版之后的 xlsx 格式。
有些2003經典版是無法使用的,只能使用其他庫 比如:xlrd,xlwt 。
其中 tablib 可以都支持,但是它的依賴比較大,使用起來復制,感興趣的小伙伴可以自行百度
一、 安裝 openpyxl
pip install openpyxl
二、導入 openpyxl
import openpyxl
1、打開 excel 文件獲取工作簿 (文件內容見最下方 截圖 )
# 有一個必填項,可填寫 文件的路 徑或者 文件對象 wb = openpyxl.load_workbook('D:\datas.xlsx') print(wb)
2、獲取表單(一個excel 文件可以有過個表單)
# 獲取所有表單 sheet = wb.worksheets print(sheet)
# 通過索引獲取表單,索引從 0 開始 sheet = wb.worksheets[0]
print(sheet)
# 通過表單名字獲取表單.有個問題,之后使用 sheet 后無法 點 出提示 sheet = wb.get_sheet_by_name('Sheet1') print(sheet)
# 簡潔版 通過字典的形式. 問題和上面一樣 sheet = wb['Sheet1'] print(sheet)
3、獲取單元格數據
1、獲取一個單元格 。
獲取的數據就是一個普通的字符串或者一個數字。
# 獲取某一個單元格的值. cell() 第一個row傳行數、第二個column傳列數, # 單元格以 1 開頭,和python索引區分 cell = sheet.cell(1, 1).value print(cell) # url
2、獲取 一行/一列 單元格 。
獲取有多個數據,多行數據存儲一般用,列表、字典、元組。
# 獲取一行的數據 cell = sheet[1] print(cell) # 獲取的一個元組,里面包含 單元格的對象 尖括號就是一個對象 # 輸出數據 (<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>) # 獲取一列的數據 cell = sheet['A'] print(cell)
3、獲取 多行/多列 單元格 。
得到的數據一般來說是嵌套的數據,比如嵌套的列表等
# 獲取所有的行,最簡單的方法 data = sheet.rows data_list = list(data)[1:] # 剔除第一條數據,第一條是標題
# 獲取所有數據 data_list = list(sheet.rows)[1:] # 剔除第一條數據,第一條是標題 new_data = [] # 新列表儲存數據# for row in data_list: # 每一行的數據存儲起來 每循環一次清空 row_data = [] # 把 row 里面的數據依次提取出來 for cell in row: # 把值添加到 row_data 列表中 row_data.append(cell.value) # 每循環一次,往 new_data 添加一次數據 new_data.append(row_data) print(new_data)
4、 寫操作,寫完一定要保存,使用文件后要關閉 (使用寫操作運行代碼前一定要關閉文件,否則會報錯)
# 寫 sheet.cell(2, 1).value = '12306'
# 保存 提供保存的路徑,不是之前的路徑那就是另存為 wb.save(r'D:\datas.xlsx')
# 關閉 wb.close()