目录

16.使用读写包操作Excel文件XlsxWriter-包

16.使用读写包操作Excel文件:XlsxWriter 包

一 XlsxWriter 的介绍

XlsxWriter 只能写入 Excel 文件。 OpenPyXL 和 XlsxWriter 的区别在笔记 15 。


二 如何使用 XlsxWriter

1.导包

import datetime as dt import xlsxwriter import excel

2.实例化工作簿

book = xlsxwriter.Workbook(“xlxswriter.xlsx”) book.close() 运行后会创建一个空白的 excel 文件。

3.添加工作表并为其命名

sheet = book.add_worksheet(“Sheet1”)

4.为工作表写入数据

使用A1表示法和单元格索引 (从0开始)写入各个单元格。 sheet.write(“A1”, “Hello 1”) sheet.write(1, 0, “Hello 2”) https://i-blog.csdnimg.cn/direct/3751ed1ca61c4905a1bc310601797ef5.png

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) https://i-blog.csdnimg.cn/direct/e96a3a83cff247f0921914a7d27c43e9.png 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 格式。 https://i-blog.csdnimg.cn/direct/4abf80a6aa144e46987c17c32e403b0f.png

示例: https://i-blog.csdnimg.cn/direct/821024f8c86b4ee3914d45e1c0d59878.png 具体参考 OpenPyXL 对应章节。

7.日期格式化(使用Excel的格式化字符串)

date_format = book.add_format({“num_format”: “mm/dd/yy”}) sheet.write(“A5”, dt.date(2016, 10, 13), date_format) https://i-blog.csdnimg.cn/direct/3d191ca26a4548b482327f13a2a48cab.png

8.索引和标题格式化

类比 OpenPyXL 中的索引和标题格式化。 https://i-blog.csdnimg.cn/direct/a82c4f9c1e67401282908a54ec2070ee.png

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.图表

sales_report_xlsxwriter.py 提取码: hnk6 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.关闭工作簿并在磁盘上创建文件

book.close()

14..xlsm 格式的文件处理

https://i-blog.csdnimg.cn/direct/f05380679eac478db674120f03e503a9.png


三 使用 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"。