1.優點
一、功能比較強
相對而言,這是除excel自身之外功能最強的工具了。比如我就用到了它提供的:字型設定、前景色背景色、border設定、檢視縮放(zoom)、單元格合併、autofilter、freeze panes、公式、data validation、單元格注釋、行高和列寬設定等等。
二、支援大檔案寫入
如果資料量非常大,可以啟用constant memory模式,這是一種順序寫入模式,得到一行資料就立刻寫入一行,而不會把所有的資料都保持在記憶體中。
2.缺點
一、不支援讀取和修改
作者並沒有打算做乙個xlsxreader來提供讀取操作。不能讀取,也就無從修改了。它只能用來建立新的檔案。我是利用xlrd把需要的資訊讀入後,用xlsxwriter建立全新的檔案。
另外,即使是建立到一半excel檔案,也是無法讀取已經建立出來的內容的(資訊應該在,但是並沒有相應的介面)。因為它的主要方法是write而不是set。當你在某個單元格寫入資料後,除非你自己儲存了相關的內容,否則還是沒有辦法讀出已經寫入的資訊。從這個角度看,你無法做到讀出->修改->寫回,只能是寫入->寫入->寫入。
二、不支援xls檔案
xls是office 2013或更早版本所使用的格式,是一種二進位制格式的檔案。xlsx則是用一系列xml檔案組成的(最後的x代表了xml)乙個壓縮包。如果非要建立低版本的xls檔案,就請移步xlwt吧。
三、暫時不支援透視表(pivot table
3.基本操作方法
建立excel檔案
import xlsxwriter
f = xlsxwriter.workbook() # 建立excel檔案
建立工作表
worksheet1 = f.add_worksheet(『操作日誌』) # 括號內為工作表表名
新增工作表樣式
樣式有很多屬性,更多具體樣式請參考官方文件。
bold = f.add_format()
寫入單個單元格資料
//row:行, col:列, data:要寫入的資料, bold:單元格的樣式
worksheet1.write(row, col, data, bold)
寫入一整行,一整列
// a1:從a1單元格開始插入資料,按行插入, data:要寫入的資料(格式為乙個列表), bold:單元格的樣式
worksheet1.write_row(「a1」,data,bold)
// a1:從a1單元格開始插入資料,按列插入, data:要寫入的資料(格式為乙個列表), bold:單元格的樣式
worksheet1.write_column(「a1」,data,bold)
插入// 第乙個引數是插入的起始單元格,第二個引數是你檔案的絕對路徑
寫入超連結
worksheet1.write_url(row, col, 「internal:%s!a1」 % (「要關聯的工作表表名」), string=「超連結顯示的名字」)
插入圖表
workbook.add_chartsheet(type="")
引數中的type指的是圖表型別,圖表型別示例如下:
[area:面積圖,bar:條形圖,column:直方圖,doughnut:環狀圖,line:折線圖,pie:餅狀圖,scatter:散點圖,radar:雷達圖,stock:箱線圖]
獲得當前excel檔案的所有工作表
workbook.worksheets()
workbook.worksheets()用於獲得當前工作簿中的所有工作表,這個函式的存在便利了對於工作表的迴圈操作,如果你想在當前工作簿的所有工作表的a1單元格中輸入乙個字元創『hello xlsxwriter』,那麼這個命令就派上用場了。
關閉excel檔案
workbook.close()
這個命令是使用xlsxwriter操作excel的最後一條命令,一定要記得關閉檔案。
使用XlsxWriter建立Excel檔案並編輯
之前操作excel使用過其他的方式,針對excel的寫入來說,使用過xlwt模組,也直接使用過win32com介面。如果說哪個最能夠發揮excel的威力,那麼肯定是win32com介面實現的方式,然而這種方式需要的是office軟體支援。至於xlwt,我覺得我們平時用到的功能基本上都有了,通常這個基...
xlsxwriter操作例子
import os import xlsxwriter workbook xlsxwriter.workbook 報告.xlsx worksheet workbook.add worksheet sheet1 worksheet.set column 0,12,12 cell format for ...
xlsxwriter編寫複雜表頭
作為一名資料分析小白,並且第一次寫blog,如果有錯,請多多指教。並且 可能太手工了,如果有更高效 簡易的寫法,請指點一下。先上圖,做成的效果大概就這個樣子,在excel中,如果要做成這種圖,很簡單,就是合併單元格的事。但在python裡面寫,就難倒我了。看完資料後,發現有兩個方向可以做成複雜表頭。...