使用Python实现写入多类型数据至Excel文件

拾柒
拾柒
发布时间:2026-10-10| 3人浏览过
原创

本文详解如何使用Python结合Free Spire.XLS库,通过程序化方式将文本、数值、日期、布尔值及字典列表等多类型数据高效写入Excel。涵盖格式设置、公式计算、图片插入与超链接创建等核心步骤,并提供资源管理与批量写入的最佳实践,帮助开发者快速构建稳定的报表自动化方案。

环境配置与基础操作

第1步:安装运行依赖

确保系统已安装 Python。通过包管理器安装官方提供的免费版本:

pip install spire.xls.free

第2步:创建工作簿并应用基础样式

以下代码演示了创建新工作簿、写入单元格内容、应用格式并保存文件的完整流程:

from spire.xls import *

workbook = Workbook()
sheet = workbook.Worksheets.get_Item(0)

# 写入文本
sheet.Range["B2"].Value = "Hello, Python & Excel!"

# 应用格式
sheet.Range.AutoFitColumns()
sheet.Range.BorderAround(LineStyleType.Medium, Color.get_MediumBlue())
sheet.Range.Style.Color = Color.get_LightGray()

# 保存并释放资源
workbook.SaveToFile("HelloWorld.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

初始写入结果预览:

包含中文提示与边框样式的Excel单元格截图
展示 Range 属性绑定与基础边框、背景色渲染效果

关键对象说明:

  • Workbook:表示一个 Excel 文件,实例化后默认包含三个工作表。
  • Worksheet:通过索引访问具体工作表。
  • Range:支持 A1 引用语法或行列索引定位单元格区域。
  • .Value / .NumberValue / .DateTimeValue / .BooleanValue:对应不同数据类型的专用写入通道。
  • .SaveToFile():将内存工作簿持久化至磁盘。
  • .Dispose():显式回收底层非托管资源,防止进程驻留。

多类型数据写入方法

第3步:处理文本与数值类型

字符串可直接赋值。对于整数和浮点数,建议显式使用 NumberValue 避免被误识别为文本格式:

sheet.Range["A1"].Value = "产品名称"
sheet.Range["B1"].Value = "销售额"
sheet.Range["A2"].Value = "笔记本电脑"
sheet.Range["B2"].NumberValue = 12000
sheet.Range["A3"].Value = "智能手机"
sheet.Range["B3"].NumberValue = 8500.75
显示产品名称与销售额数值的Excel表格截图
验证数字自动靠右对齐且保留小数精度

第4步:写入日期时间与布尔值

时间对象需使用库专属类型解析。注意该库依赖 spire.xls.common.DateTime 而非 Python 原生模块:

from spire.xls.common import *
import datetime

# 写入当前 UTC 时间
sheet.Range["B1"].DateTimeValue = DateTime.get_UtcNow()

# 写入指定日期
sheet.Range["B2"].DateTimeValue = DateTime.Parse("2023-05-01")

# 转换 Python datetime 对象
py_time = datetime.datetime(2023, 5, 1, 10, 30)
time_str = py_time.strftime("%Y-%m-%d %H:%M:%S")
sheet.Range["B3"].DateTimeValue = DateTime.Parse(time_str)

# 设置 Excel 显示格式
sheet.Range["B1"].Style.NumberFormat = "yyyy-mm-dd hh:mm:ss"
sheet.Range.AutoFitColumns()
包含格式化日期与时间的Excel单元格截图
自定义 NumberFormat 后的标准时间轴样式

布尔数据通过专用属性写入:

sheet.Range["B1"].BooleanValue = True
sheet.Range["B2"].BooleanValue = False
显示 True/False 状态标志的Excel表格截图
布尔字段的标准逻辑呈现

第5步:批量导入列表与字典数据

一维数组可使用 InsertArray 快速填充。该方法性能优于逐单元格循环:

header = ["ID", "姓名", "年龄"]
data = [[1, "张三", 30], [2, "李四", 25]]

# 写入标题行(按行横向填充)
sheet.InsertArray(header, 1, 1, True)

# 数据行采用双重循环逐项赋值
for i, row in enumerate(data, start=2):
    for j, value in enumerate(row, start=1):
        sheet.Range[i, j].Value = str(value)
包含表头与多行测试数据的Excel结构截图
二维结构数据的初步落地形态

参数 is_row 控制插入方向,设为 True 表示按行横向填充,False 表示按列纵向填充。当列表包含混合类型时,需通过循环逐项写入,并根据目标字段语义选择对应的赋值属性(如 .NumberValue 或 .DateTimeValue),以免类型信息丢失。

字典列表转表格通常以键作为列头:

products = [
    {"ID": "P001", "名称": "键盘", "价格": 199},
    {"ID": "P002", "名称": "鼠标", "价格": 99}
]

if products:
    headers = list(products[0].keys())
    sheet.InsertArray(headers, 1, 1, True)
    
    for r_idx, item in enumerate(products, start=2):
        values = [item[k] for k in headers]
        # 保持数据结构对齐
        for c_idx, val in enumerate(values, start=1):
            sheet.Range[r_idx, c_idx].Value = str(val)
键值映射生成的商品清单Excel截图
动态表头与数据行的对齐结果

高级功能与排版设置

第6步:嵌入公式与插入多媒体

公式字符串直接赋予 Formula 属性,运算交由 Excel 引擎完成:

sheet.Range["A1"].NumberValue = 10
sheet.Range["A2"].NumberValue = 20
sheet.Range["B1"].Formula = "=SUM(A1:A2)"
sheet.Range["B2"].Formula = "=AVERAGE(A1:A2)"

图像文件通过 Pictures.Add 锚定至单元格坐标:

sheet.Pictures.Add(3, 1, "logo.png")
# pic = sheet.Pictures.Add(3, 1, "logo.png")
# pic.Width, pic.Height = 100, 50

第7步:配置外部与内部超链接

支持浏览器跳转与工作表间导航:

# 外部链接
cell = sheet.Range[7, 1]
cell.Text = "Python 官网"
link = sheet.HyperLinks.Add(cell)
link.Address = "https://www.python.org"

# 内部链接
detail_sheet = workbook.Worksheets.Add("详情页")
target_cell = detail_sheet.Range["A3"]
target_cell.Text = "跳转至详情页"
internal_link = sheet.HyperLinks.Add(sheet.Range[8, 1])
internal_link.Address = f"{detail_sheet.Name}!A1"
集成公式计算与超链接导航的最终报表截图
复合功能的最终交互预览

工程实践注意事项

  • 资源管理:每次执行完毕后务必调用 workbook.Dispose(),否则可能引发进程卡死或内存持续增长。
  • 异常处理:生产环境应包裹 try...except 捕获路径不存在、权限拒绝或并发写入冲突。
  • 性能考量:单次写入超过万级记录时,优先使用 InsertArray 或整块 Range 赋值,规避逐格调用的 IO 瓶颈。
  • 路径安全:输出目录需提前校验写权限;图片资源推荐使用绝对路径,避免因工作目录切换导致引用失效。

总结

通过规范化的对象生命周期管理与合理的批量策略,即可将复杂业务数据稳定落地至结构化报表中。以上就是使用Python实现写入多类型数据至Excel文件的详细内容,更多关于Python办公自动化脚本开发资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。