百成 發表於 2025-11-14 11:40:00

国产化Excel开发组件Spire.XLS教程:Python将列表导出为CSV文件(含一维/二维/字典列表)

<p>在数据处理与交换中,CSV(逗号分隔值)格式因简洁通用,成为跨应用、跨数据库的数据交换首选。对于 Python 开发者而言,<strong>将 Python 列表转换为 CSV 格式</strong>是高频需求——无论是导出应用数据、生成报表,还是准备分析数据集,都离不开这一操作。</p>
<p><strong>Spire.XLS for Python</strong>&nbsp;凭借直观可靠的方法简化了这一过程,无需依赖 Microsoft Excel,即可轻松将各类列表导出到 CSV 文件。本文将分步骤详解如何利用该工具实现转换,覆盖从简单一维列表到复杂字典列表的全场景。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.XLS for Python试用下载,请联系慧都科技</strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>欢迎加入Spire技术交流Q群(125237868),与更多小伙伴一起提升文档开发技能~</strong></span></p>
<h2>Spire.XLS for Python 快速入门</h2>
<h3>为什么选择 Spire.XLS?</h3>
<p>Python内置的&nbsp;csv&nbsp;模块可满足基础需求,但&nbsp;<strong>Spire.XLS&nbsp;</strong>提供了更强大的功能:</p>
<ul>
<li>无缝兼容多种数据类型(字符串、数字、布尔值等);</li>
<li>支持自定义分隔符(如分号,适配欧洲地区格式);</li>
<li>可导出为 CSV、XLSX、XLS 等多种格式;</li>
<li>对简单或复杂数据结构(嵌套列表、字典列表)均有良好支持。</li>
</ul>
<h3>安装步骤</h3>
<p>通过 pip 即可快速安装<strong>&nbsp;Spire.XLS for Python</strong>,在终端或命令提示符中运行:</p>
<pre class="prettyprint highlighter-hljs"><code>pip install Spire.XLS</code></pre>
<p>安装完成后,即可直接导入模块开始编码。</p>
<h2>Python 将一维列表导出为 CSV 文件</h2>
<p>一维列表是简单的序列值(如&nbsp;["苹果", "香蕉", "樱桃"])。 以下是将这些值写入 CSV 中的单行或单列的步骤。</p>
<p><strong>步骤 1:导入 Spire.XLS 模块</strong></p>
<p>首先,从<strong>&nbsp;Spire.XLS&nbsp;</strong>导入必要的类:</p>
<pre class="prettyprint lang-py highlighter-hljs"><code>from spire.xls import *
from spire.xls.common import *</code></pre>
<p><strong>步骤2:创建工作簿与工作表</strong></p>
<p><strong>Spire.XLS</strong>&nbsp;使用工作簿和工作表来组织数据。我们将创建一个新的工作簿并添加一个新的工作表:</p>
<pre class="prettyprint lang-py highlighter-hljs"><code># 初始化工作簿
workbook = Workbook()
# 清除默认工作表,新建一个工作表
workbook.Worksheets.Clear()
worksheet = workbook.Worksheets.Add("一维列表")</code></pre>
<p><strong>步骤 3:将一维列表数据写入工作表</strong></p>
<p>可以选择将列表写入<strong>单行</strong>(水平)或<strong>单列</strong>(垂直)。</p>
<p><strong>示例 1:将一维列表写入单行</strong></p>
<pre class="prettyprint lang-py highlighter-hljs"><code>data_list = ["苹果", "香蕉", "橙子", "葡萄", "芒果"]
# 循环写入第1行,列索引从1开始
for i, item in enumerate(data_list):
   worksheet.Range.Value = item</code></pre>
<p><strong>示例 2:将一维列表写入单列</strong></p>
<pre class="prettyprint lang-py highlighter-hljs"><code>data_list = ["苹果", "香蕉", "橙子", "葡萄", "芒果"]
# 循环写入第1列,行索引从1开始
for i, item in enumerate(data_list):
   worksheet.Range.Value = item</code></pre>
<p><strong>步骤 4:将工作表保存为 CSV 文件</strong></p>
<p>使用&nbsp;SaveToFile()&nbsp;将工作簿导出为 CSV 文件。指定&nbsp;FileFormat.CSV&nbsp;以确保正确的格式:</p>
<pre class="prettyprint lang-py highlighter-hljs"><code># 指定文件格式为CSV
workbook.SaveToFile("一维列表.csv", FileFormat.CSV)
# 释放资源
workbook.Dispose()</code></pre>
<p>输出效果:<img src="https://image.evget.com/attachment/keditor/image/20251114/104215_1.png"></p>
<p>&nbsp;</p>
<h2>Python 将二维列表导出为 CSV 文件</h2>
<p>二维列表是“列表的列表”,适合表示表格数据(如包含表头和多行记录),每个内部列表对应 CSV 的一行。</p>
<p><strong>二维列表输出为 CSV 格式的 Python 代码:</strong></p>
<pre class="prettyprint lang-py highlighter-hljs"><code>from spire.xls import *
from spire.xls.common import *

# 初始化工作簿与工作表
workbook = Workbook()
workbook.Worksheets.Clear()
worksheet = workbook.Worksheets.Add("二维列表")

# 示例二维列表(含表头和数据)
data = [
    ["姓名", "年龄", "城市", "员工号"],
    ["小张", 30, "北京", 1001],
    ["小王", 25, "广东", 1069],
    ["小李", 35, "天津", 2078],
    ["小孙", 28, "武汉", 2692]
]

# 双层循环写入行和列
for row_idx, row_data in enumerate(data):
    for col_idx, cell_data in enumerate(row_data):
      # 转换为字符串确保兼容性
      worksheet.Range.Value = str(cell_data)

# 保存为CSV
workbook.SaveToFile("二维列表.csv", FileFormat.CSV)
workbook.Dispose()</code></pre>
<p><strong>关键说明:</strong></p>
<ul>
<li>适合结构化表格数据(带表头);</li>
<li>通过嵌套循环遍历行和列;</li>
<li>所有值转为字符串,避免数据类型冲突。</li>
</ul>
<p><strong>输出效果:</strong></p>
<p><img src="https://image.evget.com/attachment/keditor/image/20251114/104332_0.png"></p>
<p><em><strong>扩展技巧</strong>:生成的 CSV 可以</em>&nbsp;<em>转换为 PDF</em>&nbsp;<em>用于安全展示,或</em><em>转换为 JSON</em>&nbsp;<em>用于 Web/API 数据交换。</em></p>
<h2>Python 将字典列表导出为 CSV 文件</h2>
<p>字典列表(如&nbsp;[{"姓名": "小张", "年龄": 30}, ...])适合处理带字段名的数据,字典的键作为 CSV 表头,值作为行数据。</p>
<p><strong>字典列表输出为 CSV 格式的 Python 代码:</strong></p>
<pre class="prettyprint lang-py highlighter-hljs"><code>from spire.xls import *
from spire.xls.common import *

# 初始化工作簿与工作表
workbook = Workbook()
workbook.Worksheets.Clear()
worksheet = workbook.Worksheets.Add("字典列表")

# 示例字典列表
customer_list = [
    {"客户ID": 101, "姓名": "小张", "邮箱": "zhang@example.com
                                document.getElementById('cloak4c6b695d14e123b28d762dfe5791389e').innerHTML = '';
                                var prefix = '&amp;#109;a' + 'i&amp;#108;' + '&amp;#116;o';
                                var path = 'hr' + 'ef' + '=';
                                var addy4c6b695d14e123b28d762dfe5791389e = 'zh&amp;#97;ng' + '&amp;#64;';
                                addy4c6b695d14e123b28d762dfe5791389e = addy4c6b695d14e123b28d762dfe5791389e + '&amp;#101;x&amp;#97;mpl&amp;#101;' + '&amp;#46;' + 'c&amp;#111;m';
                                var addy_text4c6b695d14e123b28d762dfe5791389e = 'zh&amp;#97;ng' + '&amp;#64;' + '&amp;#101;x&amp;#97;mpl&amp;#101;' + '&amp;#46;' + 'c&amp;#111;m';document.getElementById('cloak4c6b695d14e123b28d762dfe5791389e').innerHTML += '&lt;a ' + path + '\'' + prefix + ':' + addy4c6b695d14e123b28d762dfe5791389e + '\'&gt;'+addy_text4c6b695d14e123b28d762dfe5791389e+'&lt;\/a&gt;';
                "},
    {"客户ID": 102, "姓名": "小王", "邮箱": "wang@example.com
                                document.getElementById('cloak014772be6786c8a1655f25d7d3fe4819').innerHTML = '';
                                var prefix = '&amp;#109;a' + 'i&amp;#108;' + '&amp;#116;o';
                                var path = 'hr' + 'ef' + '=';
                                var addy014772be6786c8a1655f25d7d3fe4819 = 'w&amp;#97;ng' + '&amp;#64;';
                                addy014772be6786c8a1655f25d7d3fe4819 = addy014772be6786c8a1655f25d7d3fe4819 + '&amp;#101;x&amp;#97;mpl&amp;#101;' + '&amp;#46;' + 'c&amp;#111;m';
                                var addy_text014772be6786c8a1655f25d7d3fe4819 = 'w&amp;#97;ng' + '&amp;#64;' + '&amp;#101;x&amp;#97;mpl&amp;#101;' + '&amp;#46;' + 'c&amp;#111;m';document.getElementById('cloak014772be6786c8a1655f25d7d3fe4819').innerHTML += '&lt;a ' + path + '\'' + prefix + ':' + addy014772be6786c8a1655f25d7d3fe4819 + '\'&gt;'+addy_text014772be6786c8a1655f25d7d3fe4819+'&lt;\/a&gt;';
                "},
    {"客户ID": 103, "姓名": "小孙", "邮箱": "sun@example.com
                                document.getElementById('cloak8c1dbb75892e18ea2760fa760ed30c0f').innerHTML = '';
                                var prefix = '&amp;#109;a' + 'i&amp;#108;' + '&amp;#116;o';
                                var path = 'hr' + 'ef' + '=';
                                var addy8c1dbb75892e18ea2760fa760ed30c0f = 's&amp;#117;n' + '&amp;#64;';
                                addy8c1dbb75892e18ea2760fa760ed30c0f = addy8c1dbb75892e18ea2760fa760ed30c0f + '&amp;#101;x&amp;#97;mpl&amp;#101;' + '&amp;#46;' + 'c&amp;#111;m';
                                var addy_text8c1dbb75892e18ea2760fa760ed30c0f = 's&amp;#117;n' + '&amp;#64;' + '&amp;#101;x&amp;#97;mpl&amp;#101;' + '&amp;#46;' + 'c&amp;#111;m';document.getElementById('cloak8c1dbb75892e18ea2760fa760ed30c0f').innerHTML += '&lt;a ' + path + '\'' + prefix + ':' + addy8c1dbb75892e18ea2760fa760ed30c0f + '\'&gt;'+addy_text8c1dbb75892e18ea2760fa760ed30c0f+'&lt;\/a&gt;';
                "}
]

# 提取表头并写入第1行(若列表非空)
if customer_list:
    headers = list(customer_list.keys())
    # 写入表头
    for col_idx, header in enumerate(headers):
      worksheet.Range.Value = str(header)
   
    # 写入数据行(从第2行开始)
    for row_idx, record in enumerate(customer_list):
      for col_idx, header in enumerate(headers):
            # 安全获取值,缺失键时用空字符串
            value = record.get(header, "")
            worksheet.Range.Value = str(value)

# 保存为CSV
workbook.SaveToFile("字典列表.csv", FileFormat.CSV)
workbook.Dispose()</code></pre>
<p><strong>关键说明:</strong></p>
<ul>
<li>表头从第一个字典的键中提取;</li>
<li>使用&nbsp;record.get(header, "")&nbsp;处理可能的缺失键;</li>
<li>严格按表头顺序排列列,确保数据对齐。</li>
</ul>
<p><strong>输出效果:</strong></p>
<div><img src="https://image.evget.com/attachment/keditor/image/20251114/104624_1.png"></div>
<p>&nbsp;</p>
<h2>进阶:自定义分隔符与编码</h2>
<p>Spire.XLS 支持灵活设置 CSV 文件的分隔符(默认逗号)和编码,适配不同地区或系统需求。通过&nbsp;Worksheet.SaveToFile()&nbsp;方法的参数指定:</p>
<pre class="prettyprint lang-py highlighter-hljs"><code># 分号分隔(欧洲常用),UTF-8编码
worksheet.SaveToFile("分号分隔.csv", ";", Encoding.get_UTF8())

# 制表符分隔,UTF-8编码
worksheet.SaveToFile("制表符分隔.csv", "\t", Encoding.get_UTF8())

# 逗号分隔,Unicode编码
worksheet.SaveToFile("Unicode编码.csv", ",", Encoding.get_Unicode())</code></pre>
<h2>总结</h2>
<p>借助&nbsp;<strong>Spire.XLS for Python</strong>,无论是简单的一维列表、结构化的二维列表,还是带字段名的字典列表,都能高效导出到 CSV 文件。只需根据数据结构选择对应方法,即可确保转换准确、输出专业。</p>
<h2>常见问题解答</h2>
<h3>1. 导出列表到 CSV 格式的最佳实践是什么?</h3>
<ul>
<li>转换前验证数据格式(如缺失值、异常类型);</li>
<li>用&nbsp;try-catch&nbsp;块捕获异常(如文件权限错误);</li>
<li>大型数据集先通过样本测试;</li>
<li>完成后调用&nbsp;Dispose()&nbsp;释放资源。</li>
</ul>
<h3>2. 如何一次性导出多个列表到不同 CSV 文件?</h3>
<p>通过循环遍历列表字典,逐个保存:</p>
<pre class="prettyprint lang-py highlighter-hljs"><code>lists = {
    "水果": ["苹果", "香蕉", "樱桃"],
    "分数":
}

for name, data in lists.items():
    wb = Workbook()
    wb.Worksheets.Clear()
    ws = wb.Worksheets.Add(name)
    for i, val in enumerate(data):
      ws.Range.Value = str(val)
    wb.SaveToFile(f"{name}.csv", FileFormat.CSV)
    wb.Dispose()</code></pre>
<h3>3. 如何在 CSV 文件中格式化数字(如货币、小数)?</h3>
<p>CSV 以文本存储数字,需提前设置格式:</p>
<pre class="prettyprint lang-py highlighter-hljs"><code># 设置A1:A10为货币格式($1,234.56)
ws.Range["A1:A10"].NumberFormat = "$#,##0.00"</code></pre>
<h3>4. Spire.XLS for Python 支持哪些操作系统?</h3>
<p>全平台支持,包括 Windows、macOS 和 Linux。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.XLS for Python试用下载,请联系慧都科技</strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>欢迎加入Spire技术交流Q群(125237868),与更多小伙伴一起提升文档开发技能~</strong></span></p><br><br>
来源:https://www.cnblogs.com/software-Development/p/19221388
頁: [1]
查看完整版本: 国产化Excel开发组件Spire.XLS教程:Python将列表导出为CSV文件(含一维/二维/字典列表)