一 XlsxWriter 的介绍
XlsxWriter 只能写入 Excel 文件。
OpenPyXL 和 XlsxWriter 的区别在笔记 15 。
二 如何使用 XlsxWriter
1.导包
python
import datetime as dt
import xlsxwriter
import excel
2.实例化工作簿
python
book = xlsxwriter.Workbook("xlxswriter.xlsx")
book.close()
运行后会创建一个空白的 excel 文件。
3.添加工作表并为其命名
python
sheet = book.add_worksheet("Sheet1")
4.为工作表写入数据
使用A1表示法和单元格索引 (从0开始)写入各个单元格。
python
sheet.write("A1", "Hello 1")
sheet.write(1, 0, "Hello 2")

5.格式化:填充颜色、对齐、边框和字体
python
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的格式化字符串)
python
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的格式化字符串)
python
date_format = book.add_format({"num_format": "mm/dd/yy"})
sheet.write("A5", dt.date(2016, 10, 13), date_format)

8.索引和标题格式化
类比 OpenPyXL 中的索引和标题格式化。

9.在 Excel 工作表的单元格中设置公式
必须使用以逗号分隔的英文公式名称。
python
sheet.write("A6", "=SUM(A4, 2)")
10.图片
python
sheet.insert_image(0, 2, "images/python.png")
11.二维列表(使用excel模块)
python
data = [[None, "North", "South"],["Last Year", 2, 5],["This Year", 3, 6]]
excel.write(sheet, data, "A10")
12.图表
sales_report_xlsxwriter.py
https://pan.baidu.com/s/1Gg0ePtKHRK4-q-qBLptL_Q?pwd=hnk6 提取码: hnk6
python
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)
python
chart = book.add_chart({"type": "column"})
创建一个新的图表对象,并指定图表类型为柱状图(column)。
python
chart.set_title({"name": "Sales per Region"})
为图表设置标题,标题内容为 "Sales per Region"。
python
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
。
python
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"。
python
sheet.insert_chart("A15", chart)
将创建的图表插入到工作表的单元格 A15
中。
13.关闭工作簿并在磁盘上创建文件
book.close()
14..xlsm
格式的文件处理
三 使用 XlsxWriter 写入大型文件:逐行写入
XlsxWriter 有一个和 OpenPyXL 类似的选项叫作 constant_memory。它也会强制逐行写入。
以字典的形式来传递 options 参数。
python
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"。