跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

Python 列表转 Excel 实战:一维、二维与字典格式

Python 列表转 Excel 是数据处理中的高频需求。本文基于 Spire.XLS 库,演示了三种常见场景的实现方案:一维列表单列导出、二维列表带表头导出以及字典列表按字段映射导出。内容涵盖环境安装、代码逻辑解析及样式优化技巧,重点解决了行号索引差异、资源释放及字典键值兼容性问题,帮助开发者快速构建稳定的数据报表导出功能。

墨染流年发布于 2026/2/13更新于 2026/7/1732 浏览
Python 列表转 Excel 实战:一维、二维与字典格式

在数据处理场景中,将 Python 列表导出为 Excel 文件是高频需求,常用于生成报表或批量导出数据。虽然 openpyxl 等库很常用,但 Spire.XLS 提供了更完整的编辑和格式支持,且无需依赖本地安装的 Excel,适合快速实现列表到 Excel 的转换。

下面我们通过三个典型场景来演示具体实现:一维列表单列导出、二维列表带表头导出以及字典列表按字段映射导出。

1. 环境准备

Spire.XLS for Python 支持 Python 3.6 及以上版本,通过 pip 安装即可:

pip install Spire.XLS.Free

2. 基础实战:导出一维列表(单列)

实现思路
  1. 创建空白工作簿并获取默认工作表;
  2. 遍历列表,将元素写入指定列(如 A 列);
  3. 保存文件并释放资源。
代码示例
from spire.xls import *
from spire.xls.common import *

# 定义要转换的一维列表
one_dimensional_list = ["Python", "Java", "C++", "JavaScript", "Go"]

# 1. 创建工作簿对象
workbook = Workbook()

# 2. 获取第一个工作表(索引从 0 开始)
worksheet = workbook.Worksheets[0]

# 3. 设置工作表名称
worksheet.Name = "编程语言列表"

# 4. 遍历列表,写入 Excel(行号从 1 开始)
for index, value in enumerate(one_dimensional_list):
    row = index + 1
    # 写入 A 列(第 1 列)
    worksheet.Range[row, 1].Text = value

# 5. 保存 Excel 文件(支持 .xlsx/.xls/.xlsm 等格式)
output_path = "一维列表转 Excel.xlsx"
workbook.SaveToFile(output_path, FileFormat.Version2016)

# 6. 释放资源(重要,避免内存泄漏)
workbook.Dispose()

print(f"一维列表已成功导出到:{output_path}")
关键点说明
  • Workbook():相当于新建一个 Excel 文件;
  • Range[row, col]:定位单元格,注意行/列号均从 1 开始;
  • Dispose():务必调用以释放工作簿资源,否则可能导致文件被占用无法删除。

3. 进阶实战:导出二维列表(带表头)

实现思路
  1. 定义包含表头和数据的二维列表;
  2. 先写入表头行,再逐行写入数据;
  3. 可选:设置表头样式(加粗、居中)提升可读性。
代码示例
from spire.xls import *
from spire.xls.common import *

# 定义二维列表(表头 + 数据)
two_dimensional_list = [
    ["姓名", "年龄", "城市", "职业"],
    ["张三", 28, "北京", "工程师"],
    ["李四", 32, "上海", "产品经理"],
    ["王五", 25, "广州", "设计师"],
    ["赵六", 30, "深圳", "开发工程师"]
]

# 1. 创建工作簿和工作表
workbook = Workbook()
worksheet = workbook.Worksheets[0]
worksheet.Name = "人员信息表"

# 2. 遍历二维列表,逐行写入
for row_index, row_data in enumerate(two_dimensional_list):
    current_row = row_index + 1
    for col_index, cell_value in enumerate(row_data):
        current_col = col_index + 1
        # 写入单元格内容,统一转为字符串
        worksheet.Range[current_row, current_col].Text = str(cell_value)
        
        # 3. 优化表头样式(加粗、居中)
        if current_row == 1:
            worksheet.Range[current_row, current_col].Style.Font.IsBold = True
            worksheet.Range[current_row, current_col].Style.HorizontalAlignment = HorizontalAlignType.Center

# 4. 自动调整列宽(适配内容长度)
worksheet.AllocatedRange.AutoFitColumns()

# 5. 保存文件
output_path = "二维列表转 Excel.xlsx"
workbook.SaveToFile(output_path, FileFormat.Version2016)
workbook.Dispose()

print(f"二维列表已成功导出到:{output_path}")
关键点说明
  • 嵌套循环:外层控制行,内层控制列;
  • 样式设置:通过 IsBold 和 HorizontalAlignment 美化表头;
  • AutoFitColumns:自动调整列宽,防止内容被截断。

4. 实战拓展:导出字典列表(贴合业务场景)

字典列表是业务开发中最常用的数据格式(如数据库查询结果),每个字典代表一行,键对应表头,值对应单元格数据。

实现思路
  1. 提取字典的键作为 Excel 表头;
  2. 先写入表头并设置样式;
  3. 遍历字典列表,按表头顺序提取值写入单元格;
  4. 处理键缺失情况,避免报错。
代码示例
from spire.xls import *
from spire.xls.common import *

# 定义字典列表(模拟业务场景)
dict_list = [
    {"用户 ID": 1001, "姓名": "张三", "年龄": 28, "城市": "北京", "注册时间": "2024-01-15"},
    {"用户 ID": 1002, "姓名": "李四", "年龄": 32, "城市": "上海", "注册时间": "2024-02-20"},
    {"用户 ID": 1003, "姓名": "王五", "年龄": 25, "城市": "广州", "注册时间": "2024-03-10"},
    {"用户 ID": 1004, "姓名": "赵六", "年龄": 30, "城市": "深圳", "注册时间": "2024-04-05"}
]

# 1. 创建工作簿和工作表
workbook = Workbook()
worksheet = workbook.Worksheets[0]
worksheet.Name = "用户信息表(字典列表)"

# 2. 提取表头(字典的键)
if not dict_list:
    print("字典列表为空,无需导出!")
    workbook.Dispose()
    exit()

headers = list(dict_list[0].keys())

# 3. 写入表头行并设置样式
for col_index, header in enumerate(headers):
    current_col = col_index + 1
    worksheet.Range[1, current_col].Text = header
    worksheet.Range[1, current_col].Style.Font.IsBold = True
    worksheet.Range[1, current_col].Style.HorizontalAlignment = HorizontalAlignType.Center

# 4. 遍历字典列表,写入数据行
for row_idx, data_dict in enumerate(dict_list):
    current_row = row_idx + 2  # 表头占第 1 行,数据从第 2 行开始
    for col_idx, header in enumerate(headers):
        current_col = col_idx + 1
        # 用 get 方法兼容键缺失场景,避免 KeyError
        cell_value = data_dict.get(header, "")
        worksheet.Range[current_row, current_col].Text = str(cell_value)

# 5. 自动调整列宽
worksheet.AllocatedRange.AutoFitColumns()

# 6. 保存并释放资源
output_path = "字典列表转 Excel.xlsx"
workbook.SaveToFile(output_path, FileFormat.Version2016)
workbook.Dispose()

print(f"字典列表已成功导出到:{output_path}")
关键点说明
  • 表头提取:优先使用第一个字典的键作为表头结构;
  • 容错处理:使用 data_dict.get(header, "") 替代直接取值,防止因键缺失导致程序崩溃;
  • 行号计算:数据行起始位置需根据表头行数动态调整。

5. 常见问题与注意事项

  1. 免费版限制:Free 版本读写 .xls 格式时有限制(每文档 5 个工作表,每表 200 行),建议优先使用 .xlsx 格式;
  2. 中文乱码:确保代码文件编码为 UTF-8,写入时直接使用字符串通常无需额外转码;
  3. 文件格式:FileFormat.Version2016 对应 .xlsx,FileFormat.Excel97to2003 对应 .xls;
  4. 字典键不一致:若字典键不完全一致,可收集所有唯一键作为表头,配合 get 方法取值。

通过以上方案,你可以灵活应对从简单列表到复杂业务数据的 Excel 导出需求。遇到合并单元格或公式插入等高级操作时,可参考官方文档进一步拓展。

目录

  1. 1. 环境准备
  2. 2. 基础实战:导出一维列表(单列)
  3. 实现思路
  4. 代码示例
  5. 定义要转换的一维列表
  6. 1. 创建工作簿对象
  7. 2. 获取第一个工作表(索引从 0 开始)
  8. 3. 设置工作表名称
  9. 4. 遍历列表,写入 Excel(行号从 1 开始)
  10. 5. 保存 Excel 文件(支持 .xlsx/.xls/.xlsm 等格式)
  11. 6. 释放资源(重要,避免内存泄漏)
  12. 关键点说明
  13. 3. 进阶实战:导出二维列表(带表头)
  14. 实现思路
  15. 代码示例
  16. 定义二维列表(表头 + 数据)
  17. 1. 创建工作簿和工作表
  18. 2. 遍历二维列表,逐行写入
  19. 4. 自动调整列宽(适配内容长度)
  20. 5. 保存文件
  21. 关键点说明
  22. 4. 实战拓展:导出字典列表(贴合业务场景)
  23. 实现思路
  24. 代码示例
  25. 定义字典列表(模拟业务场景)
  26. 1. 创建工作簿和工作表
  27. 2. 提取表头(字典的键)
  28. 3. 写入表头行并设置样式
  29. 4. 遍历字典列表,写入数据行
  30. 5. 自动调整列宽
  31. 6. 保存并释放资源
  32. 关键点说明
  33. 5. 常见问题与注意事项
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 'SVN更新' has encountered a problem :An internal error occurred during: svn错误
  • Flutter 组件 tavily_dart 鸿蒙适配与 AI 搜索集成实战
  • 无需修改 hosts 或镜像源加速 Git Clone 及子模块配置
  • 算法:二分查找(一)朴素二分实现
  • 前缀和算法核心原理与实战应用
  • Diffusion Transformer (DiT):U-Net 换 ViT 架构,应用于视频生成与机器人动作预测
  • Python 3.15 JIT 进展、AI 内核审查与中国大模型现状
  • Neo4j 图数据库从搭建到项目使用深度详解
  • 基于字幕的 AI 电影短视频批量剪辑设计思路
  • Rokid JSAR 基于 Web 技术栈的 AR 开发环境搭建与 3D 时钟实战
  • C++ 继承机制详解:栈实现、名称隐藏与默认成员函数
  • 机器人系统架构详解:2026 年最新技术路线
  • 大模型工具函数调用(Function Calling)技术实践
  • OpenClaw 飞书多 Agent 对接与隔离配置
  • Python FastAPI 入门实战:从环境搭建到接口开发
  • Spring Boot 集成本地 OCR 服务模块实战
  • C++ 类型转换详解:显式运算符与底层机制
  • Java 大数据在智能家居环境监测与智能调节中的应用
  • 鸿蒙电商购物车项目:用户管理、商品列表与购物车实现
  • Spring Boot 数据访问与数据库集成详解

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online