博客 / 詳情

返回

國產化Excel開發組件Spire.XLS教程:Python將列表導出為CSV文件(含一維/二維/字典列表)

在數據處理與交換中,CSV(逗號分隔值)格式因簡潔通用,成為跨應用、跨數據庫的數據交換首選。對於 Python 開發者而言,將 Python 列表轉換為 CSV 格式是高頻需求——無論是導出應用數據、生成報表,還是準備分析數據集,都離不開這一操作。

Spire.XLS for Python 憑藉直觀可靠的方法簡化了這一過程,無需依賴 Microsoft Excel,即可輕鬆將各類列表導出到 CSV 文件。本文將分步驟詳解如何利用該工具實現轉換,覆蓋從簡單一維列表到複雜字典列表的全場景。

Spire.XLS for Python試用下載,請聯繫慧都科技

歡迎加入Spire技術交流Q羣(125237868),與更多小夥伴一起提升文檔開發技能~

Spire.XLS for Python 快速入門

為什麼選擇 Spire.XLS?

Python內置的 csv 模塊可滿足基礎需求,但 Spire.XLS 提供了更強大的功能:

  • 無縫兼容多種數據類型(字符串、數字、布爾值等);
  • 支持自定義分隔符(如分號,適配歐洲地區格式);
  • 可導出為 CSV、XLSX、XLS 等多種格式;
  • 對簡單或複雜數據結構(嵌套列表、字典列表)均有良好支持。

安裝步驟

通過 pip 即可快速安裝 Spire.XLS for Python,在終端或命令提示符中運行:

pip install Spire.XLS

安裝完成後,即可直接導入模塊開始編碼。

Python 將一維列表導出為 CSV 文件

一維列表是簡單的序列值(如 ["蘋果", "香蕉", "櫻桃"])。 以下是將這些值寫入 CSV 中的單行或單列的步驟。

步驟 1:導入 Spire.XLS 模塊

首先,從 Spire.XLS 導入必要的類:

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

步驟2:創建工作簿與工作表

Spire.XLS 使用工作簿和工作表來組織數據。我們將創建一個新的工作簿並添加一個新的工作表:

# 初始化工作簿
workbook = Workbook()
# 清除默認工作表,新建一個工作表
workbook.Worksheets.Clear()
worksheet = workbook.Worksheets.Add("一維列表")

步驟 3:將一維列表數據寫入工作表

可以選擇將列表寫入單行(水平)或單列(垂直)。

示例 1:將一維列表寫入單行

data_list = ["蘋果", "香蕉", "橙子", "葡萄", "芒果"]
# 循環寫入第1行,列索引從1開始
for i, item in enumerate(data_list):
   worksheet.Range[1, i+1].Value = item

示例 2:將一維列表寫入單列

data_list = ["蘋果", "香蕉", "橙子", "葡萄", "芒果"]
# 循環寫入第1列,行索引從1開始
for i, item in enumerate(data_list):
   worksheet.Range[i+1, 1].Value = item

步驟 4:將工作表保存為 CSV 文件

使用 SaveToFile() 將工作簿導出為 CSV 文件。指定 FileFormat.CSV 以確保正確的格式:

# 指定文件格式為CSV
workbook.SaveToFile("一維列表.csv", FileFormat.CSV)
# 釋放資源
workbook.Dispose()

輸出效果:

 

Python 將二維列表導出為 CSV 文件

二維列表是“列表的列表”,適合表示表格數據(如包含表頭和多行記錄),每個內部列表對應 CSV 的一行。

二維列表輸出為 CSV 格式的 Python 代碼:

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[row_idx+1, col_idx+1].Value = str(cell_data)

# 保存為CSV
workbook.SaveToFile("二維列表.csv", FileFormat.CSV)
workbook.Dispose()

關鍵説明:

  • 適合結構化表格數據(帶表頭);
  • 通過嵌套循環遍歷行和列;
  • 所有值轉為字符串,避免數據類型衝突。

輸出效果:

擴展技巧:生成的 CSV 可以 轉換為 PDF 用於安全展示,或轉換為 JSON 用於 Web/API 數據交換。

Python 將字典列表導出為 CSV 文件

字典列表(如 [{"姓名": "小張", "年齡": 30}, ...])適合處理帶字段名的數據,字典的鍵作為 CSV 表頭,值作為行數據。

字典列表輸出為 CSV 格式的 Python 代碼:

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 = 'ma' + 'il' + 'to';
				var path = 'hr' + 'ef' + '=';
				var addy4c6b695d14e123b28d762dfe5791389e = 'zhang' + '@';
				addy4c6b695d14e123b28d762dfe5791389e = addy4c6b695d14e123b28d762dfe5791389e + 'example' + '.' + 'com';
				var addy_text4c6b695d14e123b28d762dfe5791389e = 'zh&#97;ng' + '&#64;' + '&#101;x&#97;mpl&#101;' + '&#46;' + 'c&#111;m';document.getElementById('cloak4c6b695d14e123b28d762dfe5791389e').innerHTML += '<a ' + path + '\'' + prefix + ':' + addy4c6b695d14e123b28d762dfe5791389e + '\'>'+addy_text4c6b695d14e123b28d762dfe5791389e+'<\/a>';
		"},
    {"客户ID": 102, "姓名": "小王", "郵箱": "wang@example.com
				document.getElementById('cloak014772be6786c8a1655f25d7d3fe4819').innerHTML = '';
				var prefix = '&#109;a' + 'i&#108;' + '&#116;o';
				var path = 'hr' + 'ef' + '=';
				var addy014772be6786c8a1655f25d7d3fe4819 = 'w&#97;ng' + '&#64;';
				addy014772be6786c8a1655f25d7d3fe4819 = addy014772be6786c8a1655f25d7d3fe4819 + '&#101;x&#97;mpl&#101;' + '&#46;' + 'c&#111;m';
				var addy_text014772be6786c8a1655f25d7d3fe4819 = 'w&#97;ng' + '&#64;' + '&#101;x&#97;mpl&#101;' + '&#46;' + 'c&#111;m';document.getElementById('cloak014772be6786c8a1655f25d7d3fe4819').innerHTML += '<a ' + path + '\'' + prefix + ':' + addy014772be6786c8a1655f25d7d3fe4819 + '\'>'+addy_text014772be6786c8a1655f25d7d3fe4819+'<\/a>';
		"},
    {"客户ID": 103, "姓名": "小孫", "郵箱": "sun@example.com
				document.getElementById('cloak8c1dbb75892e18ea2760fa760ed30c0f').innerHTML = '';
				var prefix = '&#109;a' + 'i&#108;' + '&#116;o';
				var path = 'hr' + 'ef' + '=';
				var addy8c1dbb75892e18ea2760fa760ed30c0f = 's&#117;n' + '&#64;';
				addy8c1dbb75892e18ea2760fa760ed30c0f = addy8c1dbb75892e18ea2760fa760ed30c0f + '&#101;x&#97;mpl&#101;' + '&#46;' + 'c&#111;m';
				var addy_text8c1dbb75892e18ea2760fa760ed30c0f = 's&#117;n' + '&#64;' + '&#101;x&#97;mpl&#101;' + '&#46;' + 'c&#111;m';document.getElementById('cloak8c1dbb75892e18ea2760fa760ed30c0f').innerHTML += '<a ' + path + '\'' + prefix + ':' + addy8c1dbb75892e18ea2760fa760ed30c0f + '\'>'+addy_text8c1dbb75892e18ea2760fa760ed30c0f+'<\/a>';
		"}
]

# 提取表頭並寫入第1行(若列表非空)
if customer_list:
    headers = list(customer_list[0].keys())
    # 寫入表頭
    for col_idx, header in enumerate(headers):
        worksheet.Range[1, col_idx+1].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[row_idx+2, col_idx+1].Value = str(value)

# 保存為CSV
workbook.SaveToFile("字典列表.csv", FileFormat.CSV)
workbook.Dispose()

關鍵説明:

  • 表頭從第一個字典的鍵中提取;
  • 使用 record.get(header, "") 處理可能的缺失鍵;
  • 嚴格按表頭順序排列列,確保數據對齊。

輸出效果:

 

進階:自定義分隔符與編碼

Spire.XLS 支持靈活設置 CSV 文件的分隔符(默認逗號)和編碼,適配不同地區或系統需求。通過 Worksheet.SaveToFile() 方法的參數指定:

# 分號分隔(歐洲常用),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())

總結

藉助 Spire.XLS for Python,無論是簡單的一維列表、結構化的二維列表,還是帶字段名的字典列表,都能高效導出到 CSV 文件。只需根據數據結構選擇對應方法,即可確保轉換準確、輸出專業。

常見問題解答

1. 導出列表到 CSV 格式的最佳實踐是什麼?

  • 轉換前驗證數據格式(如缺失值、異常類型);
  • 用 try-catch 塊捕獲異常(如文件權限錯誤);
  • 大型數據集先通過樣本測試;
  • 完成後調用 Dispose() 釋放資源。

2. 如何一次性導出多個列表到不同 CSV 文件?

通過循環遍歷列表字典,逐個保存:

lists = {
    "水果": ["蘋果", "香蕉", "櫻桃"],
    "分數": [85, 92, 78]
}

for name, data in lists.items():
    wb = Workbook()
    wb.Worksheets.Clear()
    ws = wb.Worksheets.Add(name)
    for i, val in enumerate(data):
        ws.Range[i+1, 1].Value = str(val)
    wb.SaveToFile(f"{name}.csv", FileFormat.CSV)
    wb.Dispose()

3. 如何在 CSV 文件中格式化數字(如貨幣、小數)?

CSV 以文本存儲數字,需提前設置格式:

# 設置A1:A10為貨幣格式($1,234.56)
ws.Range["A1:A10"].NumberFormat = "$#,##0.00"

4. Spire.XLS for Python 支持哪些操作系統?

全平台支持,包括 Windows、macOS 和 Linux。

Spire.XLS for Python試用下載,請聯繫慧都科技

歡迎加入Spire技術交流Q羣(125237868),與更多小夥伴一起提升文檔開發技能~

user avatar ivyzhang 頭像 feishu-project 頭像 zhaoxiaoman 頭像 steve-sewell 頭像 frank-joseph 頭像
5 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.