python寫入Excel表格的方法詳解
一、寫入Excel數(shù)據(jù)
週用openpyxl也提供了一些方法寫入數(shù)據(jù),這意味著你的程序可以創(chuàng)建和編輯電子表格文件。利用Python創(chuàng)建一個(gè)包含幾千行數(shù)據(jù)的電子表格是非常簡單的。
週用openpyxl.Workbook()
函數(shù),創(chuàng)建一個(gè)新的空Workbook對(duì)象
本章節(jié)所有代碼均在jupyter notebook中完成
創(chuàng)建一個(gè)新的工作簿對(duì)象
import openpyxl wb = openpyxl.Workbook() wb
<openpyxl.workbook.workbook.Workbook at 0x22473ff4da0>
獲取工作表名稱
# 查看默認(rèn)的工作表的名稱 wb.sheetnames
[‘Sheet’]
給工作表設(shè)置名稱
# 查看默認(rèn)的工作表的名稱 wb.sheetnames
[‘跟進(jìn)記錄表’]
保存工作表
wb.save('./data/第一個(gè)工作簿.xlsx') # 需要給路徑地址
創(chuàng)建和刪除工作表
- 利用
create_sheet
和del
語法,可以在工作簿中添加或刪除工作表, - 在工作簿中添加或刪除工作表之后,記得調(diào)用
save()
方法來保存變更。
創(chuàng)建sheet
wb = openpyxl.load_workbook('./data/第一個(gè)工作簿.xlsx') wb.create_sheet(title='銷售記錄')
<Worksheet “銷售記錄”>
wb.sheetnames
[‘跟進(jìn)記錄表’, ‘銷售記錄’]
wb.create_sheet(index=1,title='養(yǎng)殖技術(shù)') # index表示新創(chuàng)建的工作簿放在第幾個(gè)位置 index從0開始計(jì)數(shù)
<Worksheet “養(yǎng)殖技術(shù)”>
wb.sheetnames # 0 1 2 從0開始計(jì)數(shù)
[‘跟進(jìn)記錄表’, ‘養(yǎng)殖技術(shù)’, ‘銷售記錄’]
刪除sheet表
del wb['養(yǎng)殖技術(shù)'] wb.sheetnames
[‘跟進(jìn)記錄表’, ‘銷售記錄’]
wb.save('./data/第一個(gè)工作簿.xlsx')
千萬記?。褐挥?code>save()后打開Excel表格你做的操作才會(huì)顯示
將值寫入單元格
- 將值寫入單元格,很像將值寫入字典中的鍵
- 如果你有單元格坐標(biāo)的字符串,可以像字典的鍵一樣,將它用于Worksheet對(duì)象,指定要寫入的單元格。
- 最后使用save()進(jìn)行保存
sheet = wb['銷售記錄'] sheet['A1'] = 'HELLO' sheet['B2'] = 'world' wb.save('./data/第一個(gè)工作簿.xlsx') # 操作之后一定要保存
二、項(xiàng)目:更新一個(gè)電子表格
2.1 案例需求
獲取資源:produceSales.xlsx 提取碼: ge7k
這個(gè)項(xiàng)目需要編寫一個(gè)程序,更新產(chǎn)品銷售電子表格中的單元格,程序?qū)⒈闅v這個(gè)電子表格,找到特定類型的產(chǎn)品,并更新它們的價(jià)格
數(shù)據(jù)說明
- 每一行代表一次單獨(dú)的銷售。列分別是銷售產(chǎn)品的類型(A)、產(chǎn)品每磅的價(jià)格(B)、銷售的磅數(shù)(C),以及這次銷售的總收入(D).TOTAL列已經(jīng)設(shè)置為Excel公式,將每磅的成本乘以銷售的磅數(shù),并將結(jié)果取整到分。有了這個(gè)公式,如果列B或C發(fā)生變化,TOTAL列中的單元格將自動(dòng)更新
- 現(xiàn)在假設(shè)Garlic,Celery和Lemons的價(jià)格輸入的不正確。這讓你面對(duì)一項(xiàng)無聊的任務(wù):遍歷這個(gè)電子表格中的幾萬行,更新所有g(shù)arlic.celery和lemon行中每磅的價(jià)格。你不能簡單地對(duì)價(jià)格查找替換,因?yàn)榭赡苡衅渌漠a(chǎn)品價(jià)格一樣,你不希望錯(cuò)誤地"更正"。對(duì)于幾萬行數(shù)據(jù),手工操作可能要幾小時(shí)。但你可以編寫程序,幾秒鐘內(nèi)完成這個(gè)任務(wù)。
你的程序做下面的事情
- 循環(huán)追歷所有行。
- 如果該行是Garlic,Celery或Lemons,更新價(jià)格。
這意味著代碼需要做下面的事情:
- 打開電子表格文件。
- 針對(duì)每一行,檢查列A的值是不是Celery,Garlic或Lemon,如果是,更新列B中的價(jià)格。將該電子表格保存為一個(gè)新文件(這樣就不會(huì)丟失原來的電子表格,以防萬一)
需要更新的價(jià)格如下
- Celery 1.19
- Garlic 3.07
- Lemon 1.27
2.2 案例源碼
import openpyxl print('openning...') wb = openpyxl.load_workbook('./data/produceSales.xlsx') sheet = wb['Sheet'] # The produce types and their updated prices PRICE_UPDATES = {'Garlic': 3.07, 'Celery': 1.19, 'Lemon': 1.27} # Loop through the rows and update the prices. for rowNum in range(2, sheet.max_row + 1): # 取出第一列商品的名稱 produceName = sheet.cell(row=rowNum, column=1).value # 如果取出的商品名稱在字典中 則需要修改 if produceName in PRICE_UPDATES: sheet.cell(row=rowNum, column=2).value = PRICE_UPDATES[produceName] wb.save('./data/updateProduceSales.xlsx') print('finishing...')
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
淺析Python中g(shù)etattr和getattribute的調(diào)用
在Python中,getattr和getattribute是兩個(gè)用于屬性訪問的重要函數(shù),它們可以在運(yùn)行時(shí)動(dòng)態(tài)地獲取對(duì)象的屬性或自定義屬性訪問行為,下面我們就來學(xué)習(xí)一下它們的具體用法吧2023-11-11python?與c++相互調(diào)用實(shí)現(xiàn)
這篇文章主要介紹了python?與c++相互調(diào)用實(shí)現(xiàn),我們都知道c++運(yùn)算速度快于python,python又簡單易寫,很多人就會(huì)想到將兩者結(jié)合,接下倆小編要給大家介紹的就是python?與c++相互調(diào)用實(shí)現(xiàn),,需要的朋友可以參考一下2022-03-03Python map及filter函數(shù)使用方法解析
這篇文章主要介紹了Python map及filter函數(shù)使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08使用python接受tgam的腦波數(shù)據(jù)實(shí)例
這篇文章主要介紹了使用python接受tgam的腦波數(shù)據(jù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04Python光學(xué)仿真從Maxwell方程組到波動(dòng)方程矢量算法理解學(xué)習(xí)
這篇文章主要為大家介紹了Python光學(xué)仿真從Maxwell方程組到波動(dòng)方程算法的理解學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10python實(shí)現(xiàn)差分隱私Laplace機(jī)制詳解
今天小編就為大家分享一篇python實(shí)現(xiàn)差分隱私Laplace機(jī)制詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11