Xlsx是python用來構造xlsx文件的模塊,可以向excel2007+中寫text,numbers,formulas 公式以及hyperlinks超鏈接。
可以完成xlsx文件的自動化構造,包括:
合並單元格,制作excel圖表等功能:

import xlsxwriter
# Create an new Excel file and add a worksheet.
workbook = xlsxwriter.Workbook('demo.xlsx') #創建工作簿
worksheet = workbook.add_worksheet() #創建工作表
# Widen the first column to make the text clearer.
worksheet.set_column('A:A', 20) #設置一列或者多列單元屬性
# Add a bold format to use to highlight cells.
bold = workbook.add_format({'bold': True}) #在工作表中創建一個新的格式對象來格式化單元格,實現加粗
# Write some simple text.
worksheet.write('A1', 'Hello') #工總表寫入簡單文本
# Text with formatting.
worksheet.write('A2', 'World', bold) #工作表寫入帶有格式的文本,加粗
# Write some numbers, with row/column notation. #按照坐標寫入
worksheet.write(2, 0, 123)
worksheet.write(3, 0, 123.456)
# Insert an image.
worksheet.insert_image('B5', 'logo.png') #插入圖片
workbook.close() #關閉工作薄
安裝方式:pip install XlsxWriter
方法詳細解釋:
1.workbook類
定義:Workbook(filename[,options])
該類創建一個XlsxWriter的Workbook對象。Workbook代表整個電子表格文件,並且存儲在磁盤上。filename為字符串類型,表示創建的excel文件存儲路徑;
options:為dict類型,是可選參數,一般作為初始化工作表內容格式
add_worksheet
add_worksheet([sheetname])方法,用於添加一個新的工作表,sheetname為工作表名稱,默認是sheet1,例如:
worksheet1 = workbook.add_worksheet() #sheet1
worksheet2 = workbook.add_worksheet('test') #test
worksheet3 = workbook.add_worksheet('data') #data
worksheet4 = workbook.add_worksheet() #sheet4
add_format
add_format([properties])方法,用於在工作表中創建一個新的格式對象來格式化單元格
properties:為dict類型,為指定一個格式屬性的字典
例如設置一個加粗的格式對象如下:
bold = workbook.add_format({'bold': True})
等價的語句如下:
bold = workbook.add_format()
bold.set_bold()
add_chart
add_chart(options)方法,用於在工作表中創建一個圖表對象,內部是通過insert_chart()方法來實現的,參數為dict類型,是為圖標指定一個字典屬性。
例如設置一個線條行的圖表對象,代碼如下:
chart = workbook.add_chart({'type': 'line'})1
close
close()方法,作用是關閉工作表文件,如:
workbook.close()
2.Worksheet類
代表一個excel工作表,是比較核心的一個類。Worksheet對象不能直接實例化,而是通過Workbook對象調用add_worksheet()方法來創建,常見的方法如下:
write
write(row, col, *args)方法:是用來將普通數據寫入單元格中。
row:行坐標; col:列坐標; 坐標索引起始值為0 *args:無名字參數為數據內容,可為數字,公式,字符串或格式對象
為了簡化不同數據類型的寫入過程,write方法已作為其他更加具體的數據類型方法的別名,如:
write.string():寫入字符串類型數據 wirte_number():寫入數字型數據 write_blank():寫入空類型數據 write_formula():寫入公式型數據 write_datetime():寫入日期型數據 wirte_boolean():寫入邏輯型數據 write_url():寫入超鏈接型數據
set_row
set_row(row, height, cell_format, options)方法,用於設定行單元格的屬性。
row:指定行位置,起始下標為0; height:為float類型,設定行高,單位像素; cell_format:format類型,指定對象格式; options,字典類型,設置行hidden(隱藏)、level(組合分級)、collpsed(折疊)
示例如下:
worksheet2.write('A1', 'hello')
bold = workbook.add_format({'bold': True}) # 設定A1行高40,加粗
worksheet2.set_row(0, 40, bold) # 隱藏第二行
worksheet2.set_row(1, None, None, {'hidden': True})
set_column
set_column(first_col, last_col, width, cell_format, options)方法,用於設置一列或多列單元格的屬性
first_col:整型,指定開始列位置,起始下標為0; last_col:整型,指定結束列位置,起始下標為0; width:float類型,設置列寬; cell_format:format類型,指定格式對象; options:dict類型,設置hidden(隱藏)、level(組合分級)、collpsed(折疊);
示例如下:
worksheet2.write('A1', 'hello')
worksheet2.write('B1', 'world')
bold = workbook.add_format({'bold': True}) # 設定列A到B單元格寬度10像素,加粗
worksheet2.set_column(0, 1, 10, bold) # 設置C到D單元格寬度20像素
worksheet2.set_column('C:D', 20)
隱藏E到G單元格
worksheet2.set_column('E:G', None, None, {'hidden': 1})
insert_image
insert_image(row, col, image[, options])方法,用於插入圖片到指定的單元格,支持PNG,JPEG,BMP等多種格式。
row:行坐標,起始索引值為0; col:列坐標,起始索引值為0; image:string類型,是圖片路徑; options:dict類型,是可選參數,用於指定圖片位置,如URL等信息;
示例如下:
# 在B5單元格插入python-logo.png圖片,超鏈接為http://python.org
worksheet1.insert_image('B5', 'img/python-logo.png', {'url': 'http://python.org'})12
chart類
chart類實圖表組件,支持包括面積、條形圖、柱狀圖、折線圖、散點圖等,一個圖表對象是通過Workbook的add_chart方法創建,通過{type, ‘圖表類型’}字典來制定圖表類型,示例如下:
# 創建一個column(柱形)圖表
chart = workbook.add_chart({type, 'column'})12
常見的圖表樣式如下:
area:面積樣式的圖表 bar:條形圖 column:柱狀圖 line:線條樣式的圖表 pie:餅形圖 scatter:散點圖 stock:股票樣式的圖表 radar:雷達樣式的圖表
然后通過Worksheet的insert_chart()方法插入到指定位置,示例如下:
幾個常用方法如下:
add_series
chart.add_series(options)方法:用於添加一個數據系列的圖表,參數options為字典類型,用於設置圖表系列選項的字典,示例如下:
chart.add_series({
'categories': '=Sheet1!$A$1:$A$5',
'values': '=Sheet1!$B$1:$B$5',
'line': {'color': 'red'},
})12345
add_series的常用三個選項:
categories:設置圖表類別標簽范圍; values:設置圖表數據范圍; line:設置圖表線條屬性,包括寬度、顏色等;
set_x_axis
set_x_axis(options)方法,設置圖表X軸選項,示例如下:
chart.set_x_axis({ 'name': 'x name', 'name_font': {'size': 14, 'bold': True} 'num_font': {'italic': True}
})12345
name:設置x軸名稱;
name_font:設置x軸字體;
num_font:設置x軸數字字體屬性;
set_size
set_size(options)方法,用於設置圖表大小,示例如下:
chart.set_size({'width': 720, 'height': 576})1
width:設置寬度; height:設置高度;
set_title
set_title(options)方法,設置圖表標題,示例如下:
chart.set_title({'name': 'test'})1
set_style
set_style(style_id)方法,用於設置圖表樣式,style_id為不同數字代表不同樣式,示例如下:
chart.set_style(37)1
set_table
set_table(options)方法,設置x軸為數據表格式。示例如下:
chart.set_table()
