Python實現(xiàn)數(shù)據(jù)寫入 Excel 的三種模塊!

本文說明如何使用 xlsxwriter、pandas、openpyxl 三個庫來實現(xiàn)數(shù)據(jù)寫入 Excel,寫入后的格式如下圖所示:

以下為數(shù)據(jù)用例:
import?xlsxwriter?as?xw
import?pandas?as?pd
import?openpyxl?as?op
"-------------數(shù)據(jù)用例-------------"
orderIds?=?[1,2,3]
items?=?['A','B','C']
myData?=?[10,20,30]
testData?=?[orderIds,items,myData]
filename1?=?'測試1.xlsx'
filename2?=?'測試2.xlsx'
filename3?=?'測試3.xlsx'
"--------------執(zhí)行----------------"
xw_toexcel(testData,filename1)
pd_toexcel(testData,filename2)
op_toexcel(testData,filename3)
下面開始分別介紹三種方法:
1、xlsxwriter
def?xw_toexcel(data,filename):?#?xlsxwriter庫儲存數(shù)據(jù)到excel
????workbook?=?xw.Workbook(filename)?#?創(chuàng)建工作簿
????worksheet1?=?workbook.add_worksheet("sheet1")?#?創(chuàng)建子表
????worksheet1.activate()?#?激活表
????title?=?['序號','項目','數(shù)據(jù)']?#?設(shè)置表頭
????worksheet1.write_row('A1',title)?#?從A1單元格開始寫入表頭
????i?=?2?#?從第二行開始寫入數(shù)據(jù)
????for?j?in?range(len(data)):
????????insertData?=?[data[0][j],data[1][j],data[2][j]]
????????row?=?'A'?+?str(i)
????????worksheet1.write_row(row,?insertData)
????????i?+=?1
????workbook.close()?#?關(guān)閉表

2、pandas
def?pd_toexcel(data,filename):?#?pandas庫儲存數(shù)據(jù)到excel
????dfData?=?{?#?用字典設(shè)置DataFrame所需數(shù)據(jù)
????????'序號':data[0],
????????'項目':data[1],
????????'數(shù)據(jù)':data[2]
????}
????df?=?pd.DataFrame(dfData)?#?創(chuàng)建DataFrame
????df.to_excel(filename,index=False)?#?存表,去除原始索引列(0,1,2...)

3、openpyxl
def?op_toexcel(data,filename):?#?openpyxl庫儲存數(shù)據(jù)到excel
????wb?=?op.Workbook()?#?創(chuàng)建工作簿對象
????ws?=?wb['Sheet']?#?創(chuàng)建子表
????ws.append(['序號','項目','數(shù)據(jù)'])?#?添加表頭
????for?i?in?range(len(data[0])):
????????d?=?data[0][i],?data[1][i],?data[2][i]
????????ws.append(d)?#?每次寫入一行
????wb.save(filename)

小結(jié)
openpyxl 與 xlsxwriter 類似,需要逐行寫入,如第一行需要得到 [ 1, ‘A’ , 10 ] 的格式,但不同的是使用 openpyxl.load_workbook(filepath) 可以對已存在的 .xlsx 進行追加數(shù)據(jù),不會覆蓋;pandas 則需先按列組合,如 [[ 1,2,3],['A','B','C'],[…]]的格式。
方法各有好處,寫表時應(yīng)根據(jù)需要選用。
本文完整源碼下載:
https://alltodata.cowtransfer.com/s/067cecabd5004b
戀習(xí)Python 關(guān)注戀習(xí)Python,Python都好練
好文章,我在看??
評論
圖片
表情
