openpyxl的簡單使用
openpyxl
操作excel的庫,只能操作xlxs 文件, xlrd/xlwt這兩個庫能兼容xls(2003版)
安裝
pip install openpyxl
如果excel里面有圖片,需要安裝圖片處理模塊
pip install pillow
excel的寫入
創建一個工作簿並保存
from openpyxl import Workbook wb = Workbook() ws1 = wb.create_sheet("Mysheet") #默認最后一個 ws2 = wb.create_sheet("Mysheet", index=0) #第一個(工作簿位置) # 保存 wb.save('sb.xlsx')
修改工作簿的名稱
ws1.title = "New Title"
獲取所有工作簿的名稱
print(wb.sheetnames)
獲取其中一個工作簿名稱
for sheet in wb: print(sheet) wb["New Title"] #直接獲取名稱為New Title的工作薄
寫數據
ws['A4']=4 #這將返回A4處的單元格,如果尚不存在,則創建一個單元格。值可以直接分配 ws.cell(row=4, column=2, value=10) # 也可以通過cell來進行寫入,通過行數和列數來找到單元格所在的位置,通過value來賦值
append函數
row = [1 ,2, 3, 4, 5]
sheet.append(row)
excel的讀取
from openpyxl import load_workbook #導入模塊 wb = load_workbook(filename = 'balances.xlsx') #打開文件,默認可讀寫,若有需要可以指定write_only和read_only為True sheet = wb['test2'] #找到工作表 print(sheet['B4'].value) #輸出內容 # B9處寫入平均值 sheet['B9'] = '=AVERAGE(B2:B8)' ps:在實例化wb對象時,添加參數data_only=True,返回的“B9”就是數字(但是需要將生成的excel手動保存一次)
獲取最大行,最大列
print(sheet.max_row) print(sheet.max_column)
獲取行和列
sheet.rows為生成器, 里面是每一行的數據,每一行又由一個tuple包裹。
sheet.columns類似,不過里面是每個tuple是每一列的單元格。
# 因為按行,所以返回A1, B1, C1這樣的順序 for row in sheet.rows: for cell in row: print(cell.value) # A1, A2, A3這樣的順序 for column in sheet.columns: for cell in column: print(cell.value)