在日常办公中,Excel 报表是必不可少的,但手动生成复杂的报表不仅费时费力,还容易出错。今天我们要介绍的 XlsxWriter 库,可以让你用 Python 高效生成美观的 Excel 报表,支持多种图表和格式设置,适合需要定期制作报表的办公人员。
1. XlsxWriter的优势
XlsxWriter 是一个专门用于生成 Excel .xlsx 文件的 Python 库,特点如下:
丰富的格式支持:支持字体、颜色、边框、对齐方式等多种格式。
图表生成:支持折线图、柱状图、饼图等多种图表类型。
工作表操作:可以添加多个工作表、插入图片、设置条件格式等。
多功能报表生成:非常适合生成包含数据、图表、格式化的专业报表。
2. 安装 XlsxWriter
首先,确保已安装 XlsxWriter:
pip install XlsxWriter
安装完成后,你就可以开始使用 XlsxWriter 生成格式化的 Excel 文件。
3. 基础操作:创建和写入Excel文件
我们来创建一个简单的 Excel 文件,并添加一些数据。
示例代码
import xlsxwriter
# 创建一个新工作簿
workbook = xlsxwriter.Workbook('简单报表.xlsx')
worksheet = workbook.add_worksheet('销售数据')
# 写入数据
worksheet.write('A1', '产品')
worksheet.write('B1', '销量')
products = ['产品 A', '产品 B', '产品 C']
sales = [120, 150, 100]
for row, (product, sale) in enumerate(zip(products, sales), start=1):
worksheet.write(row, 0, product)
worksheet.write(row, 1, sale)
# 关闭工作簿
workbook.close()
执行后,将生成一个包含产品及其销量数据的 Excel 文件,表头为“产品”和“销量”。
4. 丰富的格式设置
XlsxWriter 支持多种格式,下面我们来设置一些字体、颜色和边框,使 Excel 文件更加美观。
示例:添加格式化样式
workbook = xlsxwriter.Workbook('格式化报表.xlsx')
worksheet = workbook.add_worksheet('数据')
# 设置表头格式
header_format = workbook.add_format({
'bold': True,
'font_color': 'white',
'bg_color': '#4CAF50',
'border': 1,
'align': 'center'
})
# 设置数据格式
data_format = workbook.add_format({'border': 1})
# 写入表头并应用格式
worksheet.write('A1', '产品', header_format)
worksheet.write('B1', '销量', header_format)
# 写入数据并应用格式
products = ['产品 A', '产品 B', '产品 C']
sales = [120, 150, 100]
for row, (product, sale) in enumerate(zip(products, sales), start=1):
worksheet.write(row, 0, product, data_format)
worksheet.write(row, 1, sale, data_format)
workbook.close()
通过这种格式设置,我们可以让 Excel 报表更加整齐、易读。header_format 设置了加粗、白色字体、绿色背景等样式,数据部分则设置了边框,方便阅读。
5. 添加图表
数据表格往往还需要图表来展示数据趋势。XlsxWriter 支持多种图表类型,接下来我们添加一个柱状图,显示产品的销量分布。
示例:插入柱状图
workbook = xlsxwriter.Workbook('图表报表.xlsx')
worksheet = workbook.add_worksheet('数据')
chart_sheet = workbook.add_chart({'type': 'column'})
# 写入数据
worksheet.write_row('A1', ['产品', '销量'])
worksheet.write_column('A2', ['产品 A', '产品 B', '产品 C'])
worksheet.write_column('B2', [120, 150, 100])
# 创建柱状图
chart = workbook.add_chart({'type': 'column'})
chart.add_series({
'name': '销量',
'categories': '=数据!$A$2:$A$4',
'values': '=数据!$B$2:$B$4',
'fill': {'color': '#4CAF50'}
})
# 设置图表标题和标签
chart.set_title({'name': '产品销量分布'})
chart.set_x_axis({'name': '产品'})
chart.set_y_axis({'name': '销量'})
# 将图表插入工作表
worksheet.insert_chart('D2', chart)
workbook.close()
生成的 Excel 文件中,将包含一个柱状图,展示“产品 A”、“产品 B”、“产品 C”的销量分布。图表添加了标题、x 轴和 y 轴标签,便于理解。
6. 条件格式:高亮数据
条件格式可以帮助我们快速识别特定的数据。例如,我们可以高亮销量大于100的产品数据。
示例:添加条件格式
workbook = xlsxwriter.Workbook('条件格式报表.xlsx')
worksheet = workbook.add_worksheet('数据')
# 写入数据
worksheet.write_row('A1', ['产品', '销量'])
worksheet.write_column('A2', ['产品 A', '产品 B', '产品 C'])
worksheet.write_column('B2', [120, 150, 90])
# 添加条件格式
worksheet.conditional_format('B2:B4', {
'type': 'cell',
'criteria': '>=',
'value': 100,
'format': workbook.add_format({'bg_color': '#FFEB3B', 'bold': True})
})
workbook.close()
生成的 Excel 文件中,销量大于等于100的单元格将被高亮显示,帮助我们快速识别出高销量的产品。
7. 🧩 XlsxWriter的其他实用功能
插入图片:支持 PNG、JPEG 等格式的图片插入。
多工作表支持:可以在一个文件中添加多个工作表。
数据有效性:可以设置数据的输入限制,如下拉菜单。
批注和超链接:支持在单元格中添加批注和链接。
8. 应用示例:自动生成月度销售报表
以下是一个自动生成月度销售报表的示例,包括格式化、图表和条件格式等元素。
import xlsxwriter
# 创建新工作簿
workbook = xlsxwriter.Workbook('月度销售报表.xlsx')
worksheet = workbook.add_worksheet('销售数据')
# 写入标题和数据
header_format = workbook.add_format({'bold': True, 'bg_color': '#1E88E5', 'font_color': 'white', 'align': 'center'})
worksheet.write_row('A1', ['产品', '销量'], header_format)
data = [('产品 A', 130), ('产品 B', 90), ('产品 C', 180)]
for row, (product, sales) in enumerate(data, start=1):
worksheet.write(row, 0, product)
worksheet.write(row, 1, sales)
# 添加条件格式
worksheet.conditional_format('B2:B4', {
'type': 'data_bar',
'bar_color': '#FF6F00'
})
# 添加图表
chart = workbook.add_chart({'type': 'column'})
chart.add_series({
'name': '销量',
'categories': '=销售数据!$A$2:$A$4',
'values': '=销售数据!$B$2:$B$4',
})
chart.set_title({'name': '月度产品销量分布'})
worksheet.insert_chart('D2', chart)
# 关闭文件
workbook.close()
此代码将生成一个格式化良好的 Excel 报表,包括数据条图表和条件格式,适合用于展示月度销售数据。
9. 总结
XlsxWriter 是生成高质量 Excel 报表的利器,适合各种报表需求。无论是简易数据表,还是带有条件格式和图表的复杂报表,XlsxWriter 都能让你得心应手。如果你的日常工作涉及大量 Excel 报表,可以尝试用 Python 和 XlsxWriter 提高效率,生成自动化的专业报表。