一?XlsxWriter 的介紹
二 如何使用?XlsxWriter
1.導包
import datetime as dtimport xlsxwriterimport excel
2.實例化工作簿
book = xlsxwriter.Workbook("xlxswriter.xlsx")
book.close()
運行后會創建一個空白的 excel 文件。
3.添加工作表并為其命名
sheet = book.add_worksheet("Sheet1")
4.為工作表寫入數據
sheet.write("A1", "Hello 1")
sheet.write(1, 0, "Hello 2")
5.格式化:填充顏色、對齊、邊框和字體
formatting = book.add_format({"font_color": "#FF0000","bg_color": "#FFFF00","bold": True, "align": "center","border": 1, "border_color": "#FF0000"})sheet.write("A3", "Hello 3", formatting)
font_color": "#FF0000"
: 設置字體顏色為紅色。
bg_color": "#FFFF00"
: 設置單元格的背景顏色為黃色。
bold": True
: 將字體設置為粗體。
align": "center"
: 將單元格內容水平居中對齊。
border": 1
: 為單元格添加邊框,寬度為 1。
border_color": "#FF0000"
: 設置邊框顏色為紅色。
6.數字格式化(使用Excel的格式化字符串)
number_format = book.add_format({"num_format": "0.00"})
sheet.write("A4", 3.3333, number_format)
book.add_format({...})
: 用于定義單元格的顯示樣式。
"num_format": "0.00"
: 設置單元格的數字格式為小數點后保留兩位小數。這意味著無論數字的實際值是多少,它都將在 Excel 中顯示為兩位小數。
sheet.write("A4", 3.3333, number_format)
: 這行代碼在 Excel 工作表的單元格?A4
?中寫入數字?3.3333
,并應用之前定義的?number_format
?格式。
示例:
具體參考?OpenPyXL 對應章節。
7.日期格式化(使用Excel的格式化字符串)
date_format = book.add_format({"num_format": "mm/dd/yy"})
sheet.write("A5", dt.date(2016, 10, 13), date_format)
8.索引和標題格式化
類比?OpenPyXL 中的索引和標題格式化。
9.在 Excel 工作表的單元格中設置公式
必須使用以逗號分隔的英文公式名稱。
sheet.write("A6", "=SUM(A4, 2)")
10.圖片
sheet.insert_image(0, 2, "images/python.png")
11.二維列表(使用excel模塊)
data = [[None, "North", "South"],["Last Year", 2, 5],["This Year", 3, 6]]
excel.write(sheet, data, "A10")
12.圖表
chart = book.add_chart({"type": "column"})
chart.set_title({"name": "Sales per Region"})
chart.add_series({"name": "=Sheet1!A11","categories": "=Sheet1!B10:C10","values": "=Sheet1!B11:C11"})
chart.add_series({"name": "=Sheet1!A12","categories": "=Sheet1!B10:C10","values": "=Sheet1!B12:C12"})
chart.set_x_axis({"name": "Regions"})
chart.set_y_axis({"name": "Sales"})
sheet.insert_chart("A15", chart)
chart = book.add_chart({"type": "column"})
創建一個新的圖表對象,并指定圖表類型為柱狀圖(column)。
chart.set_title({"name": "Sales per Region"})
為圖表設置標題,標題內容為 "Sales per Region"。
chart.add_series({"name": "=Sheet1!A11", "categories": "=Sheet1!B10:C10", "values": "=Sheet1!B11:C11"})
chart.add_series({"name": "=Sheet1!A12", "categories": "=Sheet1!B10:C10", "values": "=Sheet1!B12:C12"})
向圖表中添加數據系列。每個數據系列由一個名稱、一個類別范圍和一個值范圍組成。
"name": "=Sheet1!A11"
: 指定數據系列的名稱,引用工作表?Sheet1
?中的單元格?A11
。
"categories": "=Sheet1!B10:C10"
: 指定數據系列的類別,引用工作表?Sheet1
?中的單元格范圍?B10:C10
。
"values": "=Sheet1!B11:C11"
: 指定數據系列的值,引用工作表?Sheet1
?中的單元格范圍?B11:C11
。
chart.set_x_axis({"name": "Regions"})
chart.set_y_axis({"name": "Sales"})
設置坐標軸標簽。
chart.set_x_axis({"name": "Regions"})
: 設置 X 軸的標簽為 "Regions"。
chart.set_y_axis({"name": "Sales"})
: 設置 Y 軸的標簽為 "Sales"。
sheet.insert_chart("A15", chart)
將創建的圖表插入到工作表的單元格?A15
?中。
13.關閉工作簿并在磁盤上創建文件
14..xlsm
?格式的文件處理
三?使用 XlsxWriter 寫入大型文件:逐行寫入?
XlsxWriter 有一個和 OpenPyXL 類似的選項叫作 constant_memory。它也會強制逐行寫入。
以字典的形式來傳遞 options 參數。
book = xlsxwriter.Workbook("xlsxwriter_optimized.xlsx",options={"constant_memory": True})
sheet = book.add_worksheet()
# 生成一張包含1000x200個單元格的工作表
for row in range(1000):sheet.write_row(row , 0, list(range(200)))
book.close()
sheet = book.add_worksheet()
:在工作簿?book
中添加一個新的工作表,并將其賦值給變量sheet
。默認情況下,新創建的工作表會被命名為"Sheet1"。