Python寫入Excel


 前言:前面系列篇已經講解過如何使用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如下:,結果顯示價格更新成功。

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






 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM