冰蓝科技
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

CSV(逗号分隔值)文件是各行业数据交换的核心载体 — 从数据分析到后端系统均有广泛应用。它体积轻巧、易于人工阅读,且兼容几乎所有工具(Excel、谷歌表格、数据库等)。对于需要在 Python 中创建 CSV 文件的开发者来说,Spire.XLS for Python 是优选。

本文将介绍如何使用 Spire.XLS 在 Python 中生成 CSV 文件,涵盖基础 CSV 创建以及列表转 CSV、Excel 转 CSV 等进阶使用场景。

内容概览:

安装与配置

Spire.XLS for Python 兼容 Python 3.6+,安装仅需1行命令,无复杂依赖:

pip 安装

pip install Spire.XLS

临时许可证(可选)

如需解锁全部功能(如处理超大文件),可申请临时免费许可证,无限制测试全部功能。

基础操作:Python 创建一个简单 CSV 文件

先从简单场景入手:使用静态数据(例如销售报表)从头创建 CSV 文件。以下代码会创建一个新的工作簿,填充数据后将其保存为 CSV 文件。

from spire.xls import *

# 1. 初始化工作簿和工作表
workbook = Workbook()
worksheet = workbook.Worksheets[0]  # 获取默认第一个工作表

# 2. 填充数据(表头+内容)
# 写入表头(字符串类型用Text属性)
worksheet.Range["A1"].Text = "编号"
worksheet.Range["B1"].Text = "名称"
worksheet.Range["C1"].Text = "价格"
worksheet.Range["D1"].Text = "售出数"

# 写入数据行(数字类型用NumberValue属性,保证数据格式正确)
worksheet.Range["A2"].NumberValue = 101
worksheet.Range["B2"].Text = "无线耳机"
worksheet.Range["C2"].NumberValue = 79.99
worksheet.Range["D2"].NumberValue = 250

worksheet.Range["A3"].NumberValue = 102
worksheet.Range["B3"].Text = "蓝牙音箱"
worksheet.Range["C3"].NumberValue = 49.99
worksheet.Range["D3"].NumberValue = 180

# 3. 导出为CSV文件(指定分隔符为逗号,编码UTF-8)
worksheet.SaveToFile("基础销售报表.csv", ",", Encoding.get_UTF8())
# 释放资源,避免内存泄漏
workbook.Dispose()

核心逻辑解析:

  1. 对象初始化:Workbook() 创建空工作簿,Worksheets[0] 定位到第一个工作表(CSV 本质是单工作表文件);
  2. 数据填充:
    • Text 属性:用于字符串(如表头、产品名称),避免数字被自动格式化;
    • NumberValue 属性:用于数值(如价格、销量),保证 CSV 导入 Excel/数据库时类型正确;
  3. 导出与清理:SaveToFile() 将工作表导出为 CSV 格式,Dispose() 必须调用以释放内存。

输出结果:

生成的基础销售报表.csv内容如下:

Python创建CSV并写入数据

动态数据:Python 从字典列表生成 CSV 文件

在实际业务场景中,数据通常存储在字典中(例如来自 API 或数据库)。以下代码将字典列表转换为 CSV 文件:

from spire.xls import *

# 模拟动态数据(如从API/数据库获取)
客户数据 = [
    {"客户ID": 1, "姓名": "张三", "邮箱": "zhang@ example.com", "国家": "中国"},
    {"客户ID": 2, "姓名": "Maria Garcia", "邮箱": "maria@ example.es", "国家": "西班牙"},
    {"客户ID": 3, "姓名": "王五", "邮箱": "wang@ example.cn", "国家": "中国"}
]

# 1. 初始化工作簿
workbook = Workbook()
worksheet = workbook.Worksheets[0]

# 2. 自动提取表头(从第一个字典的键生成)
表头 = list(客户数据[0].keys())
for 列索引, 列名 in enumerate(表头, start=1):
    worksheet.Range[1, 列索引].Text = 列名  # 第1行固定为表头

# 3. 批量写入数据行
for 行索引, 客户 in enumerate(客户数据, start=2):  # 从第2行开始写数据
    for 列索引, 键 in enumerate(表头, start=1):
        数值 = 客户[键]
        # 自动判断数据类型,避免格式错误
        if isinstance(数值, (int, float)):
            worksheet.Range[行索引, 列索引].NumberValue = 数值
        else:
            worksheet.Range[行索引, 列索引].Text = 数值

# 4. 导出CSV(UTF-8编码兼容中文)
worksheet.SaveToFile("客户数据.csv", ",", Encoding.get_UTF8())
workbook.Dispose()

该示例非常适用于 JSON 转 CSV、数据库导出以及 REST API 数据导出场景。核心优势包括:

  • 动态表头:表头自动从字典键提取,无需手动定义,适配任意字段数量;
  • 类型兼容:自动区分数字/字符串类型,解决中文乱码、数值变成文本的常见问题;
  • 易扩展:可直接对接 JSON 数据,适配 API/数据库场景。

输出结果:

Python字典列表转CSV

Excel 转 CSV:Python 从 Excel 表格生成 CSV 文件

日常工作中常需将 Excel 报表(XLS/XLSX)转为 CSV 用于数据导入,Spire.XLS 可一键转换,支持批量处理多工作表。

from spire.xls import *

# 1. 初始化工作簿实例
workbook = Workbook()

# 2. 加载xlsx文件
workbook.LoadFromFile("示例1.xlsx")

# 3. 将Excel另存为CSV文件
workbook.SaveToFile("XLSX转CSV.csv", FileFormat.CSV)
workbook.Dispose()

转换结果:

PythonExcel转CSV

注意事项: 默认情况下,SaveToFile() 仅转换第一个工作表。如需将多个工作表转换为单独的 CSV 文件,可遍历每个工作表并一一转换为单独的 CSV 文件。

CSV 创建的最佳实践(避坑指南)

遵循以下准则,避免数据格式错误、乱码、内存溢出等问题:

  1. 编码必选UTF-8
    始终指定 Encoding.get_UTF8(),兼容中文、特殊字符,避免不同系统间乱码。

  2. 数据预处理
    导出前清理空行、空值、特殊符号(如换行符、逗号),防止 CSV 解析错误。

  3. 超大文件分块处理
    若数据量超10万行,避免一次性加载,可按批次写入。

  4. 适配不同分隔符
    欧洲地区常用分号(;),制表符分隔(TSV)用\t,仅需修改 SaveToFile 的第二个参数:

# 分号分隔(适配欧洲系统)
worksheet.SaveToFile("欧洲版数据.csv", ";", Encoding.get_UTF8())

# 制表符分隔(TSV格式)
worksheet.SaveToFile("TSV格式数据.csv", "\t", Encoding.get_UTF8())
  1. 强制释放资源
    处理完文件后必须调用 workbook.Dispose(),尤其循环处理多个文件时,防止内存泄漏。

常见问题解答(FAQ)

Q1:为什么选择 Spire.XLS 而非 Python 内置的 csv 模块?

答:csv 模块适合基础读写,但 Spire.XLS 具备多项显著优势:

  • 原生支持 Excel 与 CSV 互转,无需额外处理格式兼容
  • 自动区分数据类型(csv 模块默认全部转为字符串)
  • 支持超大文件、多工作表批量处理,性能更优
  • 无需处理编码、分隔符的底层细节,减少代码量
  • 可在 Windows、macOS 和 Linux 上运行(无需安装 Excel)

Q2:能否使用 Spire.XLS for Python 读取 CSV 文件?

答:可以。Spire.XLS 支持解析 CSV 文件并提取其中的数据。详情可参考:Python 读取 CSV 文件:从基础到进阶指南

Q3:Spire.XLS 能否将 CSV 文件转换回 Excel 格式?

答:完全支持,以下是极简示例:

from spire.xls import *

workbook = Workbook()
# 加载CSV文件
workbook.LoadFromFile("客户数据.csv", ",", 1, 1)
# 另存为Excel格式
workbook.SaveToFile("CSV转Excel.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

Q4:如何修改 CSV 的分隔符?

答: SaveToFile() 方法的第二个参数用于控制分隔符。

总结

Spire.XLS 简化了使用 Python 生成 CSV 文件的流程。无论你是从头创建报表、转换 Excel 工作簿,还是处理来自 API 和数据库的动态数据,该库都能提供健壮且灵活的解决方案。

基于本文示例,开发者可以轻松自定义分隔符、指定 UTF-8 等编码格式,并管理数据类型 — 确保你的 CSV 文件准确、兼容,可直接用于各类应用场景。如需了解更多进阶功能,可参阅官方教程合集。

Spire.XLS for Python 16.2.0 现已正式发布。该版本新增了对 ARM 架构 macOS 的支持。同时,一些在复制 OLE 对象、删除宏、将文本格式数值转换为数字格式以及将 Excel 文档保存为 EMF 图片时出现的问题也得以成功被修复。更多详情如下。

新功能:

问题修复:


获取 Spire.XLS for Python 16.2.0 请点击:

https://www.e-iceblue.cn/Downloads/Spire-XLS-Python.html

Spire.Presentation for Python 11.2.0 现已正式发布。该版本新增了对 ARM 架构 macOS 的支持。同时,修复了在将 PPT 转换为图片时出现的内容丢失问题。详情如下。

新功能:

问题修复:


获取 Spire.Presentation for Python 11.2.0 请点击:

https://www.e-iceblue.cn/Downloads/Spire-Presentation-Python.html

我们很高兴地宣布 Spire.Office 11.1.0 正式发布。在这个版本中,Spire.Doc 支持在 Word 文件中创建和操作 VBA 宏;Spire.XLS 支持将指定的单元格区域转换为 HTML;Spire.Presentation 支持基于正则表达式匹配结果对文本进行高亮显示;Spire.PDF 支持将文件保存为 PDF 2.0 版本。此外,本次更新还成功修复了大量已知问题。

该版本涵盖了最新版的 Spire.Doc、Spire.PDF、Spire.XLS、Spire.Presentation、Spire.Barcode、Spire.DocViewer、Spire.PDFViewer 和 Spire.Email。

版本信息如下:


获取Spire.Office 11.1.0,请点击:

https://www.e-iceblue.cn/Downloads/Spire-Office-NET.html

Spire.Doc

新功能:

问题修复:

Spire.XLS

新功能:

问题修复:

Spire.Presentation

新功能:

Spire.Office for Java 11.1.0 现已正式发布。在该版本中,Spire.Doc for Java 支持为表格应用自定义样式;Spire.XLS for Java 支持插入、获取、更新 Equation 公式;Spire.Presentation for Java 支持从形状中读取自定义数据;Spire.PDF for Java 支持将 PDF 对比结果保存到文件流 。此外,该版本还修复了许多已知问题。详细更新内容如下。


获取 Spire.Office for Java 11.1.0,请点击:

https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html

Spire.Doc for Java

优化:

新功能:

问题修复:

Spire.XLS for Java

新功能:

问题修复:

Spire.PDF for Java

新功能:

问题修复与优化:

Spire.Presentation for Java

新功能:

问题修复:

Spire.OCR 2.2.2 现已正式发布。该版本新增了对拉丁文字的识别支持,同时优化了中文的识别效果。详细更新内容如下。

新功能:

问题修复:


获取 Spire.OCR 2.2.2 请点击:

https://www.e-iceblue.cn/Downloads/Spire-OCR-NET.html

Spire.Doc for C++ 14.1.4 现已发布,该版本同步了一系列 Spire.Doc for .NET 的功能,主要集中于表格和列表相关的功能。具体更新如下。

新功能:

  • Style 类新增RemoveSelf方法支持移除样式。
  • document->GetStyles()->GetItem(L"Normal")->RemoveSelf();
  • 增强 Document 类功能,含页面提取ExtractPages、首节访问FirstSection及断字词典注册/注销支持(RegisterHyphenationDictionary, UnregisterHyphenationDictionary, IsHyphenationDictionaryRegistered)等。
  • 新增 DocumentNavigator 类,提供基于“虚拟光标”的简洁 API,支持快速插入文本、段落、表格、图像、复选框、OLE 对象等内容并设置样式。
  • intrusive_ptr<Document> doc = ConvertUtil::GetNewEngineDocument();
    intrusive_ptr navigator = new DocumentNavigator(doc);
    doc->LoadFromFile(inputFile.c_str());
    
    navigator->MoveToDocumentStart();
    navigator->Writeln(L"Test insert at DocumentStart");
    navigator->Writeln(L"Test insert without move");
    navigator->MoveToDocumentEnd();
    navigator->Writeln(L"Test insert at DocumentEnd");
    
    doc->SaveToFile(outputFile.c_str(), FileFormat::Docx);
    doc->Close();
  • 段落、表格、单元格、边框、样式等核心文档元素新增细粒度格式控制能力。
  • 类名 新功能 功能描述
    Paragraph GetText 获取段落的文本内容
    Table SetBorders,
    ClearBorders
    设置表格边框样式;清除表格的所有边框格式
    CellFormat ClearFormatting 清除单元格的所有格式
    Borders ClearFormatting,
    IsShadow
    清除边框格式设置;控制边框是否显示阴影效果
    RowFormat ClearBackground, Height 清除行背景色;设置行高
    StyleCollection Add (重载) 新增样式添加重载
    PreferredWidth FromPercent,
    FromPoints
    宽度数据类型
    CharacterFormat LocaleIdBi 支持双向文本的区域设置
    Frame IsFrame 判断对象是否为 Frame
    OfficeMath ToLaTexMathCode,
    FromOMMLCode
    将公式对象转换为 LaTeX 数学代码;从 OMML 字符串创建公式对象
  • 增强修订、内容控件及文档比较功能。
  • 类名 新功能 功能描述
    CompareOptions IgnoreTable、IgnoreHeadersAndFooters 比较时可忽略表格内容、页眉页脚
    DifferRevisions MoveToRevisions、MoveFromRevisions 获取"移动到"和"从...移动"类型的修订
    StructureDocumentTag* (含 Cell/Inline/Row) RemoveSelfOnly 仅移除内容控件本身,保留其包含的内容
  • 辅助功能增强。
  • 类名 新功能 功能描述
    ToPdfParameterList PdfImageCompression、 DigitalSignatureInfo 保存到PDF时配置图像压缩以及数字签名信息
    Document MarkdownExportOptions、 ListReferences 支持 Markdown 导出选项及列表引用
  • 列表系统重构。
  • 类名 新功能 功能描述
    ListFormat ApplyStyle, ApplyListRef 支持直接引用和快速设置
    ListLevel Equals, CreatePictureBullet, DeletePictureBullet, PictureBullet 支持图片项目符号及比较操作
    ListStyle ListRef, BaseStyle 支持列表引用与基础样式
    Document ListReferences 获取文档中的列表引用集合
  • 移除部分冗余或设计不合理的属性与方法,提升整体 API 的一致性。例如,移除 OfficeMath.SaveToImage、SaveImageToStream 等过时的导出方法。

  • 获取Spire.Doc for C++ 14.1.4请点击:

    https://www.e-iceblue.cn/Downloads/Spire-Doc-CPP.html

    Spire.XLS for Java 16.1.3 现已发布。该版本支持插入、获取、更新 Equation 公式,并支持 F.INV 和 T.INV.2T 公式。此外,一些在操作和转换 Excel 文档 (如 HTML 转 Excel、Excel 转 PDF)时出现的问题也已成功被修复。详情查看下文。

    新功能:

    问题修复:


    获取Spire.XLS for Java 16.1.3,请点击:

    https://www.e-iceblue.cn/Downloads/Spire-XLS-JAVA.html

    Spire.PDF for Java 12.1.4 现已正式发布。该版本新增了将 PDF 对比结果直接保存到文件流的功能。同时,针对 PDF 转换、渲染、打印及稳定性等多个方面的问题进行了修复,并进一步优化了部分功能的性能和布局效果。更多更新内容如下:

    新功能:

    问题修复与优化:


    获取 Spire.PDF for Java 12.1.4,请点击以下链接:

    https://www.e-iceblue.cn/Downloads/Spire-PDF-JAVA.html

    Spire.Doc for Python 14.1.6 现已正式发布。该版本新增了对 ARM 架构 macOS 系统的支持。同时,修复了在 Python v3.14 环境中获取文档属性以及在 macOS 系统中设置字体大小时出现的异常问题。详情如下

    新功能:

    问题修复:


    获取 Spire.Doc for Python 14.1.6 请点击:

    https://www.e-iceblue.cn/Downloads/Spire-Doc-Python.html