如何在 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 实例作为其第二个参数。实例化 CSVSaveOptions 自 aspose.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 导出活动工作表的完整已使用范围。若要将输出限制为特定范围,请将所需单元格复制到临时工作簿中并导出该工作簿。
另请参阅
- 如何使用 Aspose.Cells FOSS 保存文件 — 包括 XLSX 和 Markdown 的通用保存概述
- 如何在 Python 中将 CSV 转换为 JSON — 加载 CSV 并导出为 JSON 格式
- 如何在 Python 中将 Excel 导出为 Markdown — 使用
save_as_markdown()导出 Markdown 表格 - Aspose.Cells FOSS for Python:开发者指南 — 全面的功能文档
- API 参考 —
Workbook,CSVHandler,CSVSaveOptions