前言:前面系列篇已經講解過如何使用Python讀取Excel表格中的數據,並對數據進行讀取后的處理。今天簡單介紹下Python寫入Excel的方法並舉例說明如何應用。
表單的增、刪、寫、存操作
# 新建工作簿
wb = openpyxl.Workbook()
print(wb)
sheet = wb.active
print(sheet.title)
# 重命名表單
sheet.title = 'happy2021'
print(wb.get_sheet_names) # 這種方法會出現棄用警告,推薦下面的方法
print(wb.sheetnames)
# 保存工作簿
wb.save('original.xlsx')
# 新建表單並指定索引值
# 說明:表單的索引位置從0開始,如果創建表單的時候不指定索引值,默認在現有的表單后繼續創建。
wb.create_sheet('first.xlsx', index=0)
wb.create_sheet('second.xlsx', index=1)
print(wb.sheetnames)
# 刪除表單
wb.remove_sheet(wb.get_sheet_by_name('first.xlsx')) # 這種方法會出現棄用警告,推薦下面的方法
wb.remove(wb['first.xlsx']) # 括號內是表單對象
del wb['second.xlsx'] # 括號內是表單名稱
print(wb.sheetnames)
wb.save('temp1.xlsx') # 進行增、刪、改操作最后都需要保存下
# 往單元格中寫入值
# 說明:這點和往字典中增加鍵值對的方法類似,可進行對比學習。
wb = openpyxl.Workbook()
sheet = wb.active
sheet['A1'] = 'Hello python'
print(sheet['A1'].value)
Python寫入Excel的幾個實例
ws1 = wb.create_sheet('range names')
for row in range(40):
ws1.append(range(17)) # append()內傳入的是每一行對應的各列的取值范圍,可以是列表、字典、元組、range等
ws2 = wb.create_sheet('List')
rows = [
['Number', 'Batch1', 'Batch2'],
[2, 40, 30],
[3, 45, 60],
[4, 36, 55],
[5, 66, 88],
[6, 78, 99]
]
for row in rows:
ws2.append(row)
ws3 = wb.create_sheet('Data')
for row in range(5, 30):
for col in range(15, 50):
ws3.cell(row=row, column=col, value=get_column_letter(col)) # 將列對應的數字轉換成字符串作為單元格的值
wb.save('write_excel.xlsx')
# 上面3張表單生成以后效果如下:

實際應用場景
下面給定了一張超市農產品的價格表,要完成對表單中部分農產品的價格更新。
文件下載鏈接:https://pan.baidu.com/s/1ly0C3anyNvBDbkb4omv_OA
提取碼:ey30
# 待更新的農產品名稱(大蒜、芹菜、檸檬)及對應的價格,我們存儲在一個字典對象中:price_update = {'Garlic': 3.17, 'Celery': 1.19, 'Lemon': 1.17}
# 解題思路:遍歷整個農產品價格表,判斷每一行取出的農產品名稱是否存在price_update字典中,存在則更新對應價格;不存在,則跳過這一行。
wb = openpyxl.load_workbook(r'D:\zxt\produceSales.xlsx')
ws = wb.active
price_update = {'Garlic': 3.17, 'Celery': 1.19, 'Lemon': 1.17}
for rowNum in range(2, ws.max_row+1):
# 取出表單中每一行第一列的農產品名稱
produce = ws.cell(row=rowNum, column=1).value # 這里produce是農產品的意思
# 判斷農產品產品名稱是否存在於待更新的字典中
if produce in price_update.keys():
ws.cell(row=rowNum, column=2).value = price_update[produce]
pass
# 將更新后的文件的另存為updateProduceSales.xlsx,防止程序出錯,覆蓋原文件數據
wb.save('updateProduceSales.xlsx')
# 查看更新后的updateProduceSales.xlsx如下:,結果顯示價格更新成功。

最后,喜歡的朋友點贊、推薦下,后續精彩內容持續更新中,敬請關注!
