1.優(yōu)點(diǎn)
一、功能比較強(qiáng)
相對(duì)而言,這是除Excel自身之外功能最強(qiáng)的工具了。比如我就用到了它提供的:字體設(shè)置、前景色背景色、border設(shè)置、視圖縮放(zoom)、單元格合并、autofilter、freeze panes、公式、data validation、單元格注釋、行高和列寬設(shè)置等等。
二、支持大文件寫入
如果數(shù)據(jù)量非常大,可以啟用constant memory模式,這是一種順序?qū)懭肽J剑玫揭恍袛?shù)據(jù)就立刻寫入一行,而不會(huì)把所有的數(shù)據(jù)都保持在內(nèi)存中。
2.缺點(diǎn)
一、不支持讀取和修改
作者并沒有打算做一個(gè)XlsxReader來提供讀取操作。不能讀取,也就無從修改了。它只能用來創(chuàng)建新的文件。我是利用xlrd把需要的信息讀入后,用XlsxWriter創(chuàng)建全新的文件。
另外,即使是創(chuàng)建到一半Excel文件,也是無法讀取已經(jīng)創(chuàng)建出來的內(nèi)容的(信息應(yīng)該在,但是并沒有相應(yīng)的接口)。因?yàn)樗闹饕椒ㄊ莣rite而不是set。當(dāng)你在某個(gè)單元格寫入數(shù)據(jù)后,除非你自己保存了相關(guān)的內(nèi)容,否則還是沒有辦法讀出已經(jīng)寫入的信息。從這個(gè)角度看,你無法做到讀出->修改->寫回,只能是寫入->寫入->寫入。
二、不支持XLS文件
XLS是Office 2013或更早版本所使用的格式,是一種二進(jìn)制格式的文件。XLSX則是用一系列XML文件組成的(最后的X代表了XML)一個(gè)壓縮包。如果非要?jiǎng)?chuàng)建低版本的XLS文件,就請(qǐng)移步xlwt吧。
三、暫時(shí)不支持透視表(Pivot Table
3.基本操作方法
- 創(chuàng)建excel文件
import xlsxwriter
f = xlsxwriter.Workbook() # 創(chuàng)建excel文件
- 創(chuàng)建工作表
worksheet1 = f.add_worksheet('操作日志') # 括號(hào)內(nèi)為工作表表名
- 添加工作表樣式
樣式有很多屬性,更多具體樣式請(qǐng)參考官方文檔。
bold = f.add_format({
'bold': True, # 字體加粗
'border': 1, # 單元格邊框?qū)挾? 'align': 'left', # 水平對(duì)齊方式
'valign': 'vcenter', # 垂直對(duì)齊方式
'fg_color': '#F4B084', # 單元格背景顏色
'text_wrap': True, # 是否自動(dòng)換行
})
- 寫入單個(gè)單元格數(shù)據(jù)
//row:行, col:列, data:要寫入的數(shù)據(jù), bold:單元格的樣式
worksheet1.write(row, col, data, bold)
- 寫入一整行,一整列
// A1:從A1單元格開始插入數(shù)據(jù),按行插入, data:要寫入的數(shù)據(jù)(格式為一個(gè)列表), bold:單元格的樣式
worksheet1.write_row(“A1”,data,bold)
// A1:從A1單元格開始插入數(shù)據(jù),按列插入, data:要寫入的數(shù)據(jù)(格式為一個(gè)列表), bold:單元格的樣式
worksheet1.write_column(“A1”,data,bold)
- 插入圖片
// 第一個(gè)參數(shù)是插入的起始單元格,第二個(gè)參數(shù)是圖片你文件的絕對(duì)路徑
worksheet1.insert_image('A1','f:\\1.jpg')
- 寫入超鏈接
worksheet1.write_url(row, col, "internal:%s!A1" % ("要關(guān)聯(lián)的工作表表名"), string="超鏈接顯示的名字")
- 插入圖表
workbook.add_chartsheet(type="")
參數(shù)中的type指的是圖表類型,圖表類型示例如下:
[area:面積圖,bar:條形圖,column:直方圖,doughnut:環(huán)狀圖,line:折線圖,pie:餅狀圖,scatter:散點(diǎn)圖,radar:雷達(dá)圖,stock:箱線圖]
- 獲得當(dāng)前excel文件的所有工作表
workbook.worksheets()
workbook.worksheets()用于獲得當(dāng)前工作簿中的所有工作表,這個(gè)函數(shù)的存在便利了對(duì)于工作表的循環(huán)操作,如果你想在當(dāng)前工作簿的所有工作表的A1單元格中輸入一個(gè)字符創(chuàng)‘Hello xlsxwriter’,那么這個(gè)命令就派上用場(chǎng)了。
- 關(guān)閉excel文件
workbook.close()
這個(gè)命令是使用xlsxwriter操作Excel的最后一條命令,一定要記得關(guān)閉文件。