一、XlsxWriter 库概述
XlsxWriter 是一款专注于生成 Excel 2007 及以上版本 .xlsx 格式文件的 Python 库,核心作用是创建带格式、图表、公式的全新Excel文件,原理是直接按Office标准格式写入文件,无需依赖Microsoft Excel。优点是功能全面、格式支持丰富、兼容性强,缺点是无法读取或修改已有Excel文件。该库采用 BSD 开源许可证,可自由商用与修改。

二、XlsxWriter 安装方法
在使用 XlsxWriter 之前,我们需要先通过 Python 官方的包管理工具 pip 进行安装,这是最快捷、最稳定的安装方式,无论是 Windows、macOS 还是 Linux 系统,都可以通过统一的命令完成安装操作。
打开电脑的命令提示符(CMD)、PowerShell 或者终端(Terminal),输入以下安装命令:
pip install XlsxWriter等待命令执行完成,当界面出现 Successfully installed XlsxWriter-x.x.x 这样的提示时,就代表安装成功了。如果你的电脑中同时安装了 Python2 和 Python3,为了避免安装到错误的环境中,可以使用 pip3 install XlsxWriter 命令进行安装,确保库被安装到 Python3 环境下。
安装完成后,我们可以简单验证一下是否安装成功,在 Python 交互环境中输入 import xlsxwriter,如果没有报错,就说明 XlsxWriter 已经可以正常使用了,接下来就可以开始编写代码生成 Excel 文件。
三、XlsxWriter 基础使用教程
3.1 创建第一个简单的 Excel 文件
XlsxWriter 的基础使用逻辑非常清晰,一共分为三步:创建工作簿(Workbook)、创建工作表(Worksheet)、向工作表中写入数据,最后关闭工作簿即可生成完整的 Excel 文件。
下面是创建最简单 Excel 文件的代码示例,每一行代码都附带详细注释,方便零基础小白理解:
# 导入 XlsxWriter 库
import xlsxwriter
# 1. 创建一个名为 demo.xlsx 的工作簿对象
workbook = xlsxwriter.Workbook('demo.xlsx')
# 2. 在工作簿中创建一个工作表,默认名称为 Sheet1
worksheet = workbook.add_worksheet()
# 3. 向工作表中写入数据,格式:write(行, 列, 内容)
# Excel 中行和列的索引从 0 开始,(0,0) 代表 A1 单元格
worksheet.write(0, 0, 'Hello')
worksheet.write(0, 1, 'XlsxWriter')
worksheet.write(1, 0, 'Python')
worksheet.write(1, 1, 'Excel')
# 4. 关闭工作簿,完成文件写入
workbook.close()代码说明:
- 首先导入
xlsxwriter库,这是使用所有功能的前提; xlsxwriter.Workbook('demo.xlsx')用于创建工作簿,括号内的字符串是生成 Excel 文件的名称;add_worksheet()用于创建工作表,不传入参数时默认工作表名为 Sheet1,也可以自定义名称,例如add_worksheet('学生成绩');write()方法是核心写入方法,前两个参数分别是行号和列号,第三个参数是要写入单元格的内容;- 最后必须调用
workbook.close(),否则文件无法正常保存,这是很多新手容易忽略的细节。
运行这段代码后,会在 Python 脚本的同级目录下生成一个名为 demo.xlsx 的 Excel 文件,打开后可以看到 A1、B1、A2、B2 单元格已经成功写入对应内容。
3.2 自定义工作表名称
在实际使用中,默认的 Sheet1 无法满足需求,我们可以通过 add_worksheet() 方法的参数自定义工作表名称,让 Excel 文件结构更清晰,代码如下:
import xlsxwriter
# 创建工作簿
workbook = xlsxwriter.Workbook('自定义工作表.xlsx')
# 创建多个自定义名称的工作表
worksheet1 = workbook.add_worksheet('产品清单')
worksheet2 = workbook.add_worksheet('销售数据')
worksheet3 = workbook.add_worksheet('库存统计')
# 分别向不同工作表写入数据
worksheet1.write('A1', '产品名称')
worksheet2.write('A1', '销售日期')
worksheet3.write('A1', '库存数量')
# 关闭工作簿
workbook.close()代码说明:
- 一个 Excel 文件中可以创建多个工作表,每个工作表都有独立的名称;
- 除了使用行号列号定位单元格,还可以使用 Excel 原生的单元格地址,例如
A1、B5,使用起来更直观; - 多个工作表之间互不影响,可分别写入不同的数据内容。
3.3 写入不同类型的数据
XlsxWriter 支持写入字符串、数字、日期、公式等多种数据类型,无需手动转换格式,库会自动识别处理,下面演示不同数据类型的写入方法:
import xlsxwriter
from datetime import datetime
workbook = xlsxwriter.Workbook('数据类型.xlsx')
worksheet = workbook.add_worksheet()
# 写入字符串
worksheet.write(0, 0, '商品名称')
# 写入数字
worksheet.write(0, 1, 100)
# 写入浮点数
worksheet.write(0, 2, 99.99)
# 写入日期
worksheet.write(0, 3, datetime.now())
# 写入计算公式(求和公式)
worksheet.write(0, 4, '=B1+C1')
workbook.close()代码说明:
- 写入日期时需要导入
datetime模块,库会自动将日期格式转换为 Excel 可识别的格式; - 写入公式时直接按照 Excel 公式语法编写字符串即可,打开 Excel 后会自动计算结果;
- 无论写入哪种数据类型,都使用
write()方法,库会自动匹配对应的写入逻辑,降低使用门槛。
四、XlsxWriter 格式设置功能
4.1 设置单元格字体格式
为了让 Excel 文件更美观、易读,我们可以通过 add_format() 方法创建格式对象,设置字体、字号、颜色、加粗、斜体等样式,这是 XlsxWriter 非常实用的功能之一。
代码示例:
import xlsxwriter
workbook = xlsxwriter.Workbook('字体格式.xlsx')
worksheet = workbook.add_worksheet()
# 创建字体格式对象
bold_format = workbook.add_format({
'bold': True, # 加粗
'font_size': 14, # 字号
'font_color': 'red', # 字体颜色
'font_name': '微软雅黑' # 字体
})
# 创建居中对齐格式
center_format = workbook.add_format({
'align': 'center', # 水平居中
'valign': 'vcenter', # 垂直居中
'italic': True # 斜体
})
# 应用格式写入数据
worksheet.write(0, 0, '标题', bold_format)
worksheet.write(1, 0, '内容', center_format)
workbook.close()代码说明:
add_format()接收一个字典参数,键是格式属性,值是对应的样式;- 常用字体属性:
bold(加粗)、font_size(字号)、font_color(颜色)、font_name(字体)、italic(斜体); - 一个格式对象可以重复使用,应用到多个单元格中,提高代码复用率。
4.2 设置单元格边框和背景色
除了字体格式,还可以设置单元格的边框样式、背景填充颜色,让表格的边界更清晰,重点数据更突出,代码如下:
import xlsxwriter
workbook = xlsxwriter.Workbook('边框背景.xlsx')
worksheet = workbook.add_worksheet()
# 创建带边框和背景色的格式
cell_format = workbook.add_format({
'border': 1, # 边框宽度
'border_color': 'black', # 边框颜色
'bg_color': '#FFFF00', # 背景色(黄色)
'align': 'center'
})
# 批量写入带格式的数据
data = [
['姓名', '年龄', '性别'],
['张三', 20, '男'],
['李四', 22, '女']
]
for row_num, row_data in enumerate(data):
for col_num, col_data in enumerate(row_data):
worksheet.write(row_num, col_num, col_data, cell_format)
workbook.close()代码说明:
border设置边框宽度,数值越大边框越粗,border_color自定义边框颜色;bg_color支持颜色名称和十六进制颜色码,满足个性化配色需求;- 通过循环嵌套可以批量为表格数据应用格式,适合处理大量数据的场景。
4.3 设置列宽和行高
当单元格内容过长或过短时,默认的列宽行高会影响显示效果,XlsxWriter 提供了 set_column() 和 set_row() 方法分别设置列宽和行高。
代码示例:
import xlsxwriter
workbook = xlsxwriter.Workbook('列宽行高.xlsx')
worksheet = workbook.add_worksheet()
# 写入数据
worksheet.write(0, 0, '这是一段很长的文本内容,测试列宽是否适配')
worksheet.write(1, 0, '测试行高')
# 设置列宽:set_column(起始列, 结束列, 宽度)
worksheet.set_column(0, 0, 30)
# 设置行高:set_row(行号, 高度)
worksheet.set_row(0, 30)
worksheet.set_row(1, 20)
workbook.close()代码说明:
set_column(0, 0, 30)表示将第 1 列(A列)的宽度设置为 30;set_row(0, 30)表示将第 1 行的高度设置为 30;- 可以批量设置多列或多行,例如
set_column(0, 2, 20)表示将 A、B、C 三列宽度都设为 20。
五、XlsxWriter 高级功能:插入图表
XlsxWriter 支持插入柱状图、折线图、饼图、条形图等多种图表类型,可直接通过代码生成可视化图表,无需手动在 Excel 中制作,适合自动化生成报表的场景。
5.1 插入柱状图
代码示例:
import xlsxwriter
workbook = xlsxwriter.Workbook('柱状图.xlsx')
worksheet = workbook.add_worksheet()
# 准备图表数据
chart_data = [
['月份', '销售额'],
['1月', 1000],
['2月', 1500],
['3月', 1200],
['4月', 1800],
['5月', 2000]
]
# 写入数据
for row_num, row_data in enumerate(chart_data):
worksheet.write_row(row_num, 0, row_data)
# 创建柱状图对象
chart = workbook.add_chart({'type': 'column'})
# 配置图表数据系列
chart.add_series({
'name': '销售额',
'categories': ['Sheet1', 1, 0, 5, 0], # 横坐标数据
'values': ['Sheet1', 1, 1, 5, 1], # 纵坐标数据
'fill': {'color': 'blue'} # 柱子颜色
})
# 设置图表标题和坐标轴名称
chart.set_title({'name': '月度销售额统计表'})
chart.set_x_axis({'name': '月份'})
chart.set_y_axis({'name': '销售额(元)'})
# 将图表插入到工作表中
worksheet.insert_chart('A7', chart)
workbook.close()代码说明:
add_chart({'type': 'column'})创建柱状图,修改type值可切换图表类型,如line(折线图)、pie(饼图);add_series()配置图表数据,categories是横坐标,values是纵坐标,格式为[工作表名, 起始行, 起始列, 结束行, 结束列];set_title()、set_x_axis()、set_y_axis()分别设置图表标题和坐标轴名称,让图表更易懂;insert_chart()将图表插入到指定单元格位置。
六、XlsxWriter 实际业务案例:学生成绩统计表
下面结合实际业务场景,使用 XlsxWriter 生成一份完整的学生成绩统计表,包含表头格式、数据写入、公式计算、列宽设置等功能,贴近真实开发需求。
完整代码示例:
import xlsxwriter
# 创建工作簿
workbook = xlsxwriter.Workbook('学生成绩统计表.xlsx')
worksheet = workbook.add_worksheet('成绩表')
# 定义表头格式:加粗、居中、边框、背景色
header_format = workbook.add_format({
'bold': True,
'align': 'center',
'valign': 'vcenter',
'border': 1,
'bg_color': '#00BFFF',
'font_color': 'white',
'font_size': 12
})
# 定义数据格式:居中、边框
data_format = workbook.add_format({
'align': 'center',
'valign': 'vcenter',
'border': 1
})
# 定义总分格式:加粗、居中、边框、红色
total_format = workbook.add_format({
'bold': True,
'align': 'center',
'valign': 'vcenter',
'border': 1,
'font_color': 'red'
})
# 表头数据
headers = ['学号', '姓名', '语文', '数学', '英语', '总分']
# 学生成绩数据
student_data = [
['001', '张三', 85, 92, 88],
['002', '李四', 78, 95, 90],
['003', '王五', 90, 86, 94],
['004', '赵六', 82, 88, 85]
]
# 写入表头
worksheet.write_row(0, 0, headers, header_format)
# 写入学生成绩数据
for row_num, row_data in enumerate(student_data, start=1):
worksheet.write_row(row_num, 0, row_data, data_format)
# 写入总分公式(语文+数学+英语)
worksheet.write(row_num, 5, f'=C{row_num+1}+D{row_num+1}+E{row_num+1}', total_format)
# 设置列宽
worksheet.set_column(0, 5, 12)
# 关闭工作簿
workbook.close()代码说明:
- 该案例模拟了学校学生成绩统计场景,包含学号、姓名、各科成绩、总分等字段;
- 为不同区域设置不同格式,表头突出显示,总分用红色加粗标注;
- 通过公式自动计算总分,无需手动计算,提升效率;
- 统一设置列宽,保证表格内容完整显示,打开后即可直接使用。
运行代码后生成的 Excel 文件,结构清晰、样式美观,可直接用于教学、办公等场景,充分体现了 XlsxWriter 在自动化办公中的实用价值。
相关资源
- Pypi地址:https://pypi.org/project/XlsxWriter
- Github地址:https://github.com/jmcnamara/XlsxWriter
- 官方文档地址:https://xlsxwriter.readthedocs.io/
关注我,每天分享一个实用的Python自动化工具。

