如何在 Python 中将 Excel 导出为 Markdown

如何在 Python 中将 Excel 导出为 Markdown

将 Excel 数据导出为 Markdown 是文档流水线、README 生成器和静态站点工作流中的常见需求。Aspose.Cells FOSS for Python 通过 workbook.save_as_markdown() 实现单方法操作:无需 Microsoft Office。

注意:Aspose.Cells FOSS 导出为 XLSX、CSV、TSV、Markdown 和 JSON。PDF 导出不属于 FOSS 库。

为什么使用 Aspose.Cells FOSS 将 Excel 导出为 Markdown?

  1. No Office dependency:完全在 Python 中转换,无需本机 COM 或 Office 安装。
  2. In-memory support:使用 MarkdownHandler 生成 Markdown 字符串,无需任何磁盘 I/O。
  3. Customizable output:通过 MarkdownSaveOptions 配置导出行为。
  4. Pipeline-friendly:直接集成到文档生成器、Hugo 静态站点或 GitHub Actions 工作流中。

分步指南

步骤 1:安装 Aspose.Cells FOSS for Python

使用 pip 从 PyPI 安装库:

pip install aspose-cells-foss

验证安装:

from aspose.cells_foss import Workbook
print("Ready.")

步骤 2:创建工作簿并填充数据

from aspose.cells_foss import Workbook, Cell

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

##Headers
ws.cells["A1"].value = "Product"
ws.cells["B1"].value = "Q1 Revenue"
ws.cells["C1"].value = "Q2 Revenue"

##Data rows
ws.cells["A2"].value = "Widget A"
ws.cells["B2"].value = 12500
ws.cells["C2"].value = 15000

ws.cells["A3"].value = "Widget B"
ws.cells["B3"].value = 8750
ws.cells["C3"].value = 9200

ws.cells["A4"].value = "Widget C"
ws.cells["B4"].value = 20000
ws.cells["C4"].value = 22500

步骤 3:导出为 Markdown

调用 workbook.save_as_markdown(),使用 .md 输出路径:

workbook.save_as_markdown("report.md")
print("Markdown saved successfully.")

输出是一个标准的 Markdown 表格:

| Product | Q1 Revenue | Q2 Revenue |
|---|---|---|
| Widget A | 12500 | 15000 |
| Widget B | 8750 | 9200 |
| Widget C | 20000 | 22500 |

步骤 4:使用 MarkdownSaveOptions 自定义

使用 MarkdownSaveOptions 来控制输出格式:

from aspose.cells_foss import Workbook, Cell, MarkdownSaveOptions

workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"].value = "City"
ws.cells["B1"].value = "Population"
ws.cells["A2"].value = "London"
ws.cells["B2"].value = 9000000
ws.cells["A3"].value = "Tokyo"
ws.cells["B3"].value = 13960000

options = MarkdownSaveOptions()

workbook.save_as_markdown("cities.md", options)

MarkdownSaveOptions 实例传递给 save_as_markdown() 进行配置。


步骤 5:在内存中生成 Markdown(无文件 I/O)

使用 MarkdownHandler.save_markdown_to_string() 将 Markdown 获取为 Python 字符串:

from aspose.cells_foss import Workbook, Cell, MarkdownHandler

workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"].value = "Key"
ws.cells["B1"].value = "Value"
ws.cells["A2"].value = "version"
ws.cells["B2"].value = "26.3.0"
ws.cells["A3"].value = "license"
ws.cells["B3"].value = "MIT"

md_string = MarkdownHandler.save_markdown_to_string(workbook)
print(md_string)
##Use md_string in an API response, a GitHub README template, etc.

步骤 6:加载现有 XLSX 并导出为 Markdown

from aspose.cells_foss import Workbook

workbook = Workbook("existing_report.xlsx")
workbook.save_as_markdown("existing_report.md")
print("Markdown export complete.")

这会保留所有单元格值和基本结构。注意: Markdown 导出仅读取 cell.value —— 那些仅包含公式且没有缓存值的单元格在输出中将显示为空白。库在导出时不会评估公式。为确保公式结果显示,请先在 Excel 或 LibreOffice 中打开文件(该程序会评估并缓存公式结果),另存为 XLSX,然后重新导出。


步骤 7: 错误处理

在生产环境中使用时,将导出包装在 try/except 块中:

from aspose.cells_foss import Workbook

def export_to_markdown(xlsx_path: str, md_path: str) -> bool:
    try:
        workbook = Workbook(xlsx_path)
        workbook.save_as_markdown(md_path)
        return True
    except FileNotFoundError:
        print(f"Input file not found: {xlsx_path}")
        return False
    except Exception as e:
        print(f"Export failed for {xlsx_path}: {e}")
        return False

常见问题及解决方案

1. 空的 Markdown 输出

Cause: 工作表没有填充的单元格。
Fix: 在调用 save_as_markdown() 之前,确认已设置 ws.cells["A1"].value 且未设置 None

2. ModuleNotFoundError: No module named 'aspose.cells_foss'

Cause: 包未安装或使用了错误的包名。
Fix: 运行 pip install aspose-cells-foss。导入应为 from aspose.cells_foss import ...(下划线,而不是点)。

3. AttributeError: 'Workbook' object has no attribute 'save_as_markdown'

原因: 您安装了错误的包 (aspose-cells-python 而不是 aspose-cells-foss)。 解决方案: pip install aspose-cells-foss 并确认 from aspose.cells_foss import Workbook

4. 输出文件中的编码问题

原因: 将 Markdown 字符串写入文件时未指定 UTF-8 编码。
修复: 使用 MarkdownHandler.save_markdown_to_string() 并显式写入:

with open("output.md", "w", encoding="utf-8") as f:
    f.write(md_string)

常见问题

我可以改为导出为 PDF 吗?

不。PDF 导出在 Aspose.Cells FOSS 中不可用。请使用商业 aspose-cells-python 包进行 PDF 输出。

我可以加载哪些输入格式,然后导出为 Markdown?

XLSX 和 CSV 文件可以使用 Workbook("file.xlsx") 加载,然后导出为 Markdown。

当有多个工作表时,我如何只导出一个工作表?

默认情况下,save_as_markdown() 导出第一个工作表。传入 MarkdownSaveOptions 实例以进行额外配置。

我可以在 Linux 或 macOS 上运行它吗?

是的。该库可在 Windows、Linux 和 macOS 上运行,无需任何平台特定的设置。


相关资源:

 中文