Excel 是最常用的数据整理、分析和展示工具之一。无论是财务报表还是运营仪表盘,很多场景都需要将数据导出到 Excel,以便阅读和共享。相比手动输入,通过 Python 自动化写入 Excel 文件 能让处理过程更高效、更可靠,也具备更好的扩展性。
在本文中,我们将介绍如何 使用 Python 将数据写入 Excel 文件,内容涵盖结构化数据插入、格式设置以及数据导出。文中示例所用库支持在代码中直接创建并自定义工作簿。
本教程包含内容:
环境准备
在 Python 中写入 Excel 文件,需要使用支持创建、加载和保存工作簿的库。Spire.XLS for Python 提供完整的 API,可以轻松实现自动化报表生成和数据处理。
使用 pip 安装:
pip install spire.xls
安装完成后,可以通过以下三种核心操作来处理 Excel 文件:
- 创建新工作簿 – 使用 Workbook() 初始化 Excel 文档。
- 加载现有工作簿 – 使用 LoadFromFile() 打开已有 Excel 文件。
- 保存工作簿 – 使用 SaveToFile() 将工作簿导出为 .xlsx、.xls、CSV 等格式。
这些操作构成了后续写入数据、设置格式和管理多工作表的基础。
使用 Python 将数据写入 Excel 文件
在实际业务中,可能需要新建 Excel 文件、更新现有报表,或者写入不同类型的数据(如文本、数字、日期和公式)。下面展示了在这些常见场景下,如何高效地 用 Python 在 Excel 中写入和管理数据。
向现有 Excel 文件追加数据
如果需要在已有 Excel 报表中追加新信息,例如新增销售记录、库存更新或附加数据行,可以通过以下方式在不覆盖原有内容的情况下插入数据并保存:
from spire.xls import Workbook, ExcelVersion
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")
sheet = workbook.Worksheets[0]
# 添加新行(中文示例)
sheet.Range["A4"].Value = "笔记本电脑"
sheet.Range["B4"].NumberValue = 5
sheet.Range["C4"].NumberValue = 5800.00
sheet.Range["A5"].Value = "显示器"
sheet.Range["B5"].NumberValue = 10
sheet.Range["C5"].NumberValue = 1200.00
workbook.SaveToFile("output/updated_excel.xlsx", ExcelVersion.Version2016)
关键点:
- LoadFromFile() – 加载现有 Excel 文件。
- Range["单元格"] – 通过名称引用单元格。
- Value / NumberValue – 向单元格写入文本或数值。
- SaveToFile() – 保存文件到指定格式。
这种方式能让报表在不丢失原始内容的情况下持续更新。
示例效果:
批量写入多行多列数据
对于大规模数据,逐行逐列写入效率低,推荐一次性写入整个数据集。这样不仅节省时间,还能保证数据在表格中的一致性:
from spire.xls import Workbook, ExcelVersion
# 创建新工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]
orders = [
["订单号", "客户", "产品", "数量", "价格", "状态"],
[1001, "张三", "笔记本电脑", 2, 5800.00, "已发货"],
[1002, "李四", "显示器", 1, 1200.00, "待处理"],
[1003, "王五", "键盘", 5, 80.00, "已送达"],
[1004, "赵六", "鼠标", 3, 50.00, "已发货"],
[1005, "钱七", "平板电脑", 1, 2600.00, "待处理"]
]
for row_index, row_data in enumerate(orders, start=1):
for col_index, value in enumerate(row_data, start=1):
if isinstance(value, (int, float)):
sheet.Range[row_index, col_index].NumberValue = value
else:
sheet.Range[row_index, col_index].Value = value
workbook.SaveToFile("output/orders.xlsx", ExcelVersion.Version2016)
要点:
- enumerate() – 获取行列索引。
- Range[row, col] – 通过行列索引引用单元格。
批量写入非常适合导出数据库查询结果或生成运营报表。
效果示例:
写入不同类型的数据
Excel 支持多种数据类型,例如文本、数字、日期、公式和布尔值。使用合适的属性和方法可以保证数据准确存储和展示:
from spire.xls import Workbook, ExcelVersion, DateTime, TimeSpan
workbook = Workbook()
sheet = workbook.Worksheets[0]
# 一般值
sheet.Range[2, 2].Text = "常规示例"
sheet.Range[2, 3].Value = "示例123"
# 数字
sheet.Range[3, 2].Text = "数字示例"
sheet.Range[3, 3].NumberValue = 1234.56
sheet.Range[3, 3].NumberFormat = "0.000"
# 日期
sheet.Range[4, 2].Text = "日期示例"
sheet.Range[4, 3].DateTimeValue = DateTime.get_UtcNow()
# 公式
sheet.Range[5, 2].Text = "公式示例"
sheet.Range[5, 5].NumberValue = 1234.56
sheet.Range[5, 6].NumberValue = 6543.21
sheet.Range[5, 3].Formula = "=SUM(E5:F5)"
# 文本
sheet.Range[6, 2].Text = "文本示例"
sheet.Range[6, 3].Text = "示例文本"
# 布尔值
sheet.Range[7, 2].Text = "布尔示例"
sheet.Range[7, 3].BooleanValue = True
sheet.AllocatedRange.Style.Font.FontName = "微软雅黑"
sheet.AllocatedRange.AutoFitColumns()
workbook.SaveToFile("output/value_types.xlsx", ExcelVersion.Version2016)
常用属性:
- Value – 一般值,适合文本或混合内容。
- NumberValue – 数字值,保证格式和计算正确。
- DateTimeValue – 日期时间值。
- Formula – 设置公式,实现动态计算。
- BooleanValue – 布尔值 True/False。
- Text – 单元格显示文本。
效果示例:
在写入 Excel 时应用格式设置
为了让 Excel 报表更清晰、专业,可以在写入数据的同时应用格式。本节展示如何通过样式、数字格式和行列尺寸调整来提升可读性。
应用单元格样式
可以为单元格设置字体、边框、背景色等样式:
from spire.xls import Workbook, Color, FontUnderlineType, ExcelVersion, BordersLineType, LineStyleType
workbook = Workbook()
sheet = workbook.Worksheets[0]
# 表头
sheet.Range["A1"].Value = "产品"
sheet.Range["B1"].Value = "类别"
sheet.Range["C1"].Value = "单价"
sheet.Range["D1"].Value = "数量"
sheet.Range["E1"].Value = "合计"
# 数据
sheet.Range["A2"].Value = "华为笔记本"
sheet.Range["B2"].Value = "电脑"
sheet.Range["C2"].NumberValue = 5800.00
sheet.Range["D2"].NumberValue = 1
sheet.Range["E2"].Formula = "=C2*D2"
sheet.Range["A3"].Value = "小米手机"
sheet.Range["B3"].Value = "手机"
sheet.Range["C3"].NumberValue = 3200.00
sheet.Range["D3"].NumberValue = 1
sheet.Range["E3"].Formula = "=C3*D3"
# 设置表头样式
header = sheet.Range["A1:E1"]
header.Style.Font.FontName = "微软雅黑"
header.Style.Font.Size = 12.0
header.Style.Font.IsBold = True
header.Style.Font.Underline = FontUnderlineType.Single
header.Style.Interior.Color = Color.get_LightGray()
header.Style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Medium
核心属性:
- Style.Font – 控制字体样式(加粗、下划线等)。
- Interior.Color – 单元格背景色。
- Borders.LineStyle – 单元格边框样式。
样式能突出重点区域,增强可读性。
设置数字格式
通过 NumberFormat,可以将数字显示为货币、百分比等格式:
# 设置数字格式
sheet.Range["C2:C3"].NumberFormat = "¥#,##0.00" # 货币格式
sheet.Range["D2:D3"].NumberFormat = "0" # 整数格式
sheet.Range["E2:E3"].NumberFormat = "¥#,##0.00"
要点:
- NumberFormat – 控制数字显示方式,数据本身不变。
- 可定义符号、小数位、百分比等展示规则。
适当的数字格式能让财务数据更直观、更专业。更多内容可参考 如何用 Python 设置 Excel 单元格数字格式。
调整列宽和行高
为了保证内容完整显示,可以自动调整或固定行列尺寸:
# 自动调整列宽和行高
for col in range(1, 5):
sheet.AutoFitColumn(col)
for row in range(1, 3):
sheet.AutoFitRow(row)
# 指定区域自动调整
#sheet.Range["A1:E3"].AutoFitColumns()
#sheet.Range["A1:E3"].AutoFitRows()
# 固定列宽和行高
sheet.Columns[1].Width = 150
sheet.Rows[1].Height = 30
workbook.SaveToFile("output/formatted_excel.xlsx", ExcelVersion.Version2016)
关键点:
- AutoFitColumn / AutoFitRow – 自动调整单列/单行。
- AutoFitColumns / AutoFitRows – 调整指定区域。
- Width / Height – 手动设置固定宽高。
灵活使用自动调整和固定尺寸,可以保证报表既整齐又美观。
效果示例:
更多高级格式技巧(如条件格式),可参考 Python 设置 Excel 样式指南。
使用 Python 管理 Excel 多工作表
在 Excel 中,将数据分类存放在多个工作表中能让结构更清晰。例如,可以为销售、采购、库存等创建不同工作表。本节演示如何 创建、访问和管理多个工作表:
from spire.xls import Workbook, ExcelVersion
workbook = Workbook()
sheet = workbook.Worksheets[0]
sheet.Name = "销售数据"
sheet1 = workbook.Worksheets["Sheet2"]
sheet1.Name = "采购数据"
sheet2 = workbook.Worksheets.Add("库存数据")
sheet2.Range["A1"].Value = "产品ID"
sheet2.Range["B1"].Value = "库存数量"
sheet2.Range["A2"].Value = "P001"
sheet2.Range["B2"].NumberValue = 100
sheet2.Range["A3"].Value = "P002"
sheet2.Range["B3"].NumberValue = 50
workbook.SaveToFile("output/multi_sheet.xlsx", ExcelVersion.Version2016)
主要方法:
- Worksheets[Index] – 按索引访问工作表。
- Worksheets["单元格名称"] – 按单元格名称(如 A1)访问,更直观。
- Worksheets.Add("名称") – 新增工作表,适合分类存储不同数据。
合理管理多个工作表能让数据更有条理。
生成 Excel 文件效果:
使用 Python 写入 Excel 的最佳实践
在写入 Excel 文件时,建议遵循以下原则:
- 使用描述性表名,如 “Sales_2024” 而非 “Sheet1”。
- 批量写入大数据集,避免逐单元格操作,提高性能。
- 保持格式一致,特别是表头、合计列。
- 利用公式,保持动态计算。
- 验证数据类型,避免在图表或公式中出错。
- 选择合适文件格式:现代场景用 .xlsx,兼容性需求用 .xls。
- 逻辑组织工作表,便于导航和管理。
遵循这些规范,能生成更专业、可复用的报表。
总结
使用 Python 自动化写入 Excel,可以大幅提升报表生成效率。通过创建工作簿、批量写入数据、应用样式、管理多工作表以及支持多种数据类型,开发者可以轻松生成一致、准确且专业的 Excel 文件。更多功能可 申请免费临时许可证 或试用 Free Spire.XLS for Python。
Python 写入 Excel 常见问题
Q1: Python 可以写入已有 Excel 文件吗?
可以。Python 能加载已有文件,在保留原有数据的同时追加或修改内容。
Q2: 如何高效处理大数据集?
批量写入多行数据,并在插入时尽量减少格式操作,可以保证性能。
Q3: 可以在 Excel 文件中添加公式吗?
可以。支持输入公式(如 =SUM()),并保持动态计算。
Q4: Spire.XLS for Python 支持操作哪些 Excel 格式?
Spire.XLS for Python 支持保存为 .xlsx、.xls、CSV,还可以导出为 PDF,满足不同兼容性需求。