Python 列表到 Excel:清理数据导出与格式化

发布: (2025年12月30日 GMT+8 17:49)
8 min read
原文: Dev.to

Source: Dev.to

Allen Yang

将 Python 列表写入 Excel

Write Python Lists to Excel

在当今数据驱动的世界中,Python 已成为数据处理和自动化的首选语言。实际应用中一个非常常见的需求是将处理后的数据——尤其是以 Python 列表形式组织的数据——导出为 Excel 文件,以便共享、可视化、报告或进一步分析。

虽然 Python 提供了多种将数据写入 Excel 的方式,但许多开发者在寻找既 高效又灵活 的解决方案时会遇到困难,尤其是在涉及格式化、样式以及处理大数据集时。选择合适的库可以显著提升开发速度和输出质量。

本文将介绍如何使用 Spire.XLS for Python 将 Python 列表数据写入 Excel 文件。除了基本的数据导出功能外,它还支持高级格式化、精确的布局控制以及可扩展的数据处理——非常适合自动化工作流和报表生成。

环境设置

Spire.XLS for Python 是一个专业的 Excel 库,旨在以编程方式创建、读取、编辑、转换和打印 Excel 文件。其关键优势之一是 无需安装 Microsoft Excel 或 Office,这使其特别适合服务器端和云环境。

该库支持广泛的 Excel 格式,包括 .xls.xlsx.xlsm.xlt。它还提供了丰富的 API,用于处理工作簿、工作表、单元格、样式、图表、公式、批注等。

在将列表数据写入 Excel 时,Spire.XLS for Python 允许您:

  • 精确控制数据写入位置
  • 应用单元格级别的格式和样式
  • 自动处理不同的数据类型
  • 生成结构良好且视觉上精致的 Excel 文件

安装

在开始之前,请确保已在您的环境中安装 Spire.XLS for Python。您可以使用 pip 轻松安装:

pip install Spire.XLS

安装完成后,您即可在 Python 项目中直接导入并使用它。

将 Python 列表写入 Excel:基础示例

场景

假设我们有一个列表,其中每个内部列表代表一行数据:

data = [
    ["Department", "Budget (USD)", "Actual Spend (USD)", "Difference"],
    ["Marketing", 80000, 76500, -3500],
    ["Engineering", 150000, 162300, 12300],
    ["Administration", 50000, 48200, -1800]
]

代码示例

from spire.xls import *
from spire.xls.common import *

def write_simple_list_to_excel(data_list, file_path="simple_data.xlsx"):
    """
    将简单的 Python 列表写入 Excel 文件。
    :param data_list: 包含数据的列表,每个子列表代表一行。
    :param file_path: 输出的 Excel 文件路径。
    """
    # 创建一个新的工作簿
    workbook = Workbook()
    # 获取第一个工作表
    sheet = workbook.Worksheets[0]

    # 遍历列表并将数据写入单元格
    for row_idx, row_data in enumerate(data_list):
        for col_idx, cell_value in enumerate(row_data):
            # 为对应的单元格赋值(Spire.XLS 使用基于 1 的索引)
            sheet.Range[row_idx + 1, col_idx + 1].Value = str(cell_value)

    # 自动调整列宽
    sheet.Range.AutoFitColumns()

    # 将工作簿保存为 Excel 文件
    workbook.SaveToFile(file_path, FileFormat.Version2016)
    workbook.Dispose()
    print(f"Data successfully written to: {file_path}")

# 调用函数
write_simple_list_to_excel(data)

输出预览

Python write list to Excel

关键点说明

  • Workbook() 创建一个新的 Excel 工作簿。
  • workbook.Worksheets[0] 获取默认工作表。
  • Range[row, column] 使用基于 1 的索引定位单元格。
  • Value 为单元格赋值;字符串和数字会自动处理。
  • SaveToFile() 将工作簿保存为 .xlsx 格式。
  • Dispose() 释放资源,防止内存泄漏。

重要提示: Spire.XLS 中的行列索引从 1 开始,而不是 0,因此需要使用 row_idx + 1col_idx + 1

高级用法:格式化和复杂数据类型

场景

  • 第一行应视为带有格式的标题。
  • 数据包含日期和时间戳,必须正确显示。

代码示例(部分)

from spire.xls import *
import datetime

def write_advance():
    # ... (implementation continues)

(高级示例的其余部分请参见原文。)

将列表数据写入 Excel(含标题和格式化)

def write_advanced_list_to_excel(data_list, file_path="advanced_data.xlsx"):
    """
    Write list data with headers and formatting to Excel.
    :param data_list: List containing data, first row as headers.
    :param file_path: Output Excel file path.
    """
    workbook = Workbook()
    sheet = workbook.Worksheets[0]

    # Write header row with styles
    header_data = data_list[0]
    for col_idx, header_text in enumerate(header_data):
        header_cell = sheet.Range[1, col_idx + 1]
        header_cell.Value = header_text
        header_cell.Style.Font.IsBold = True
        header_cell.Style.KnownColor = ExcelColors.LightYellow
        header_cell.Style.HorizontalAlignment = HorizontalAlignType.Center

    # Write data rows
    for row_idx, row_data in enumerate(data_list[1:]):
        for col_idx, cell_value in enumerate(row_data):
            cell = sheet.Range[row_idx + 2, col_idx + 1]

            if isinstance(cell_value, datetime.datetime):
                cell.DateTimeValue = DateTime.Parse(str(cell_value))
                cell.Style.NumberFormat = "yyyy-mm-dd hh:mm"
            elif isinstance(cell_value, datetime.date):
                cell.DateTimeValue = DateTime.Parse(str(cell_value))
                cell.Style.NumberFormat = "yyyy-mm-dd"
            else:
                cell.Value = str(cell_value)

    # Auto‑fit columns
    for i in range(1, 5):
        sheet.AutoFitColumn(i)

    workbook.SaveToFile(file_path, FileFormat.Version2016)
    workbook.Dispose()
    print(f"Formatted Excel file created: {file_path}")

包含日期的示例数据

advanced_data = [
    ["Order ID", "Customer", "Amount (USD)", "Order Date"],
    ["SO-20231026001", "Shenzhen Zhilian Tech", 32800, datetime.date(2023, 10, 26)],
    ["SO-20231025002", "Beijing Ruida Info", 15600,
     datetime.datetime(2023, 10, 25, 14, 30)],
    ["SO-20231027003", "Shanghai Qiming Systems", 48900,
     datetime.date(2023, 10, 27)],
    ["SO-20231028004", "Hangzhou CloudData", 21450,
     datetime.datetime(2023, 10, 28, 9, 15)]
]

write_advanced_list_to_excel(advanced_data)

输出预览

高级 Python Excel 格式化

显著特性

  • 单元格样式 通过 cell.Style(字体、颜色、对齐)
  • 日期处理 使用 DateTimeValueNumberFormat
  • 自动列宽调整 使用 AutoFitColumn()

错误处理与性能优化

常见问题与解决方案

问题解决方案
无效的文件路径或权限确保输出目录存在且具有写入权限。
数据类型不正确使用专用属性,如 DateTimeValue 处理日期相关数据。
大数据集和内存使用考虑批量写入或在导出前预处理数据。

推荐模式

try:
    workbook = Workbook()
    # Excel operations
    workbook.SaveToFile(file_path, FileFormat.Version2016)
except Exception as e:
    print(f"Error writing Excel file: {e}")
finally:
    if 'workbook' in locals():
        workbook.Dispose()

性能提示

  • 仅保存工作簿一次,在写入所有数据之后。
  • 在可能的情况下,将样式应用于 范围 而不是单个单元格。
  • 在将数据传递给 Excel 库之前 预处理数据
  • 始终调用 Dispose() 以释放资源。

结论

本文演示了如何使用 Spire.XLS for Python 将 Python 列表数据导出到 Excel,从基础的数据写入开始,扩展到高级格式化和稳健的错误处理。无论是生成报告、导出分析结果,还是构建自动化工作流,这种方法都提供了灵活性和可靠性。

通过探索图表、公式和数据验证等附加功能,您可以进一步将 Spire.XLS for Python 集成到数据处理管道中,释放更大的自动化潜力。

Back to Blog

相关文章

阅读更多 »

Lyra:命令行助手

我为助手编写了框架和主循环。之所以选择 CLI 助手而不是语音或 AI 助手,是因为我的硬件限制。我……