如何在 Python 中将电子表格保存为 CSV

如何在 Python 中将电子表格保存为 CSV

问题

使用 Aspose.Cells FOSS 在 Python 中将 Excel 工作簿 (.xlsx) 保存为 CSV 文件。使用 Workbook() 加载工作簿,然后调用 save_as_csv() 将活动工作表写入逗号分隔值文件。可选地传入 CSVSaveOptions 对象以控制分隔符、编码和引号行为。

先决条件

要在 Python 中使用 Aspose.Cells FOSS 将电子表格保存为 CSV,请确保您的环境满足以下要求。

  • 已安装 Python 3.7 或更高版本
  • 通过 pip install aspose-cells-foss>=26.3.1 安装 Aspose.Cells FOSS
  • 使用 from aspose.cells_foss import Workbook 导入库
  • 对 Python 文件处理有基本了解

保存步骤

步骤 1: 安装库

从 PyPI 安装 Aspose.Cells FOSS。FOSS 使用不需要许可证文件。

pip install aspose-cells-foss

步骤 2:加载工作簿

使用现有的 .xlsx 文件路径实例化 Workbook。构造函数接受一个可选的 password 参数,用于受保护的工作簿。

from aspose.cells_foss import Workbook

workbook = Workbook("input.xlsx")

如果要改为使用全新的工作簿,请省略文件路径:

from aspose.cells_foss import Workbook

workbook = Workbook()
worksheet = workbook.worksheets[0]

# Populate some cells
worksheet.cells["A1"].value = "Product"
worksheet.cells["B1"].value = "Price"
worksheet.cells["A2"].value = "Widget"
worksheet.cells["B2"].value = 9.99
worksheet.cells["A3"].value = "Gadget"
worksheet.cells["B3"].value = 24.95

步骤 3:将活动工作表另存为 CSV

使用所需的输出路径调用 Workbook.save_as_csv()。该方法默认写入第一个(活动)工作表。

workbook.save_as_csv("output.csv")

或者,使用通用 Workbook.save() 方法 — Aspose.Cells FOSS 从 .csv 扩展名推断 CSV 格式:

workbook.save("output.csv")

当不需要自定义选项时,两次调用产生相同的输出。

步骤 4:使用 CSV 选项保存

Workbook.save_as_csv() 接受一个可选的 CSVSaveOptions 实例作为其第二个参数。实例化 CSVSaveOptionsaspose.cells_foss.csv_handler 并直接传递它以控制导出行为,例如选择非默认的分隔符或编码。

from aspose.cells_foss import Workbook
from aspose.cells_foss.csv_handler import CSVSaveOptions

workbook = Workbook("input.xlsx")

# Create options instance — configure attributes per your environment's needs
options = CSVSaveOptions()

workbook.save_as_csv("output_custom.csv", options)

当未传递 CSVSaveOptions 时,save_as_csv() 使用库的内置默认值(逗号分隔符,UTF-8 编码)。在需要以编程方式覆盖这些默认值时,请传递 options 对象。

步骤 5:导出特定工作表

当工作簿包含多个工作表时,将导出活动工作表。使用 Workbook.set_active_worksheet() 在保存前选择要导出的工作表。

from aspose.cells_foss import Workbook

workbook = Workbook("multi_sheet.xlsx")

# Export the second worksheet (index 1)
workbook.set_active_worksheet(1)
workbook.save_as_csv("sheet2_output.csv")

要将每个工作表导出为各自的 CSV 文件,请遍历 workbook.worksheets

from aspose.cells_foss import Workbook

workbook = Workbook("multi_sheet.xlsx")

for index in range(len(workbook.worksheets)):
    ws = workbook.get_worksheet_by_index(index)
    workbook.set_active_worksheet(index)
    workbook.save_as_csv(f"sheet_{ws.name}.csv")

完整示例

以下自包含示例创建一个工作簿,填充示例数据,并将其分别保存为标准 CSV 和分号分隔的 CSV。

from aspose.cells_foss import Workbook
from aspose.cells_foss.csv_handler import CSVSaveOptions

# Create workbook and populate data
workbook = Workbook()
worksheet = workbook.worksheets[0]

headers = ["Name", "Department", "Salary"]
rows = [
    ["Alice", "Engineering", 95000],
    ["Bob",   "Marketing",   72000],
    ["Carol", "Finance",     81000],
]

for col, header in enumerate(headers):
    col_letter = chr(ord("A") + col)
    worksheet.cells[f"{col_letter}1"].value = header

for row_idx, row in enumerate(rows, start=2):
    for col_idx, val in enumerate(row):
        col_letter = chr(ord("A") + col_idx)
        worksheet.cells[f"{col_letter}{row_idx}"].value = val

# Save as standard CSV (default options)
workbook.save_as_csv("employees.csv")

# Save with explicit CSVSaveOptions instance
options = CSVSaveOptions()
workbook.save_as_csv("employees_custom.csv", options)

print("CSV files written successfully.")

常见问题

空输出文件

如果输出的 CSV 为空或仅包含空行,请在调用 save_as_csv() 之前验证已为单元格赋值。该方法导出活动工作表——请使用 workbook.get_active_worksheet() 确认正确的工作表已激活。

编码问题 (乱码字符)

在 Excel 中打开 CSV 并看到字符乱码时,请检查导出时使用的编码。Aspose.Cells FOSS 默认使用 UTF-8;Windows 上的 Excel 可能需要字节顺序标记(BOM)才能正确识别编码。通过 CSVSaveOptions 配置编码,并将其传递给 save_as_csv()

多工作表工作簿仅导出一个工作表

CSV 是一种单表格格式;每个文件只能保存一个工作表。使用 set_active_worksheet(index) 如步骤 5 所示,分别导出每个工作表。

包含分隔符的单元格

如果单元格值包含分隔符字符(例如,在逗号分隔的输出中是逗号),Aspose.Cells FOSS 在导出时会自动为该值加引号。如有需要,可使用 CSVSaveOptions 自定义引号行为。

常见问题

Q: workbook.save("output.csv") 是否产生与 save_as_csv() 相同的结果?

是的。Workbook.save() 检查文件扩展名,并在扩展名为 .csv 时委托给 save_as_csv()。当需要在内置默认设置之外自定义导出时,直接调用 save_as_csv() 并传入一个 CSVSaveOptions 实例。

Q: 我可以导出为 CSV 字符串而不是文件吗?

是的。使用 CSVHandler.save_csv_to_string(workbook, options) 来自 aspose.cells_foss.csv_handler。这会将 CSV 内容作为 Python 字符串返回,您可以将其写入流、上传或进一步处理,而无需触及文件系统。

from aspose.cells_foss import Workbook
from aspose.cells_foss.csv_handler import CSVHandler, CSVSaveOptions

workbook = Workbook("input.xlsx")
csv_string = CSVHandler().save_csv_to_string(workbook, CSVSaveOptions())
print(csv_string)

Q: 保存后如何将 CSV 加载回工作簿?

在现有的 Workbook 实例上使用 Workbook.load_csv("file.csv"),或从 aspose.cells_foss.csv_handler 调用便利函数 load_csv_workbook("file.csv"),一次性获取可直接使用的工作簿。

Q: 支持哪些 Python 版本?

Aspose.Cells FOSS 需要 Python 3.7 或更高版本。CSV 导出不需要额外的本机扩展;该库是纯 Python 的。

问:我可以只将工作表的一部分(单元格范围)保存为 CSV 吗?

Aspose.Cells FOSS 导出活动工作表的完整已使用范围。若要将输出限制为特定范围,请将所需单元格复制到临时工作簿中并导出该工作簿。

另请参阅

 中文