
Excel 文件常用于存储结构化数据,而 Markdown 则广泛应用于技术文档、静态网站以及基于 Git 的发布工作流中。当你需要在 Markdown 文档中复用电子表格数据时,手动复制和重新格式化 Excel 表格不仅耗时,而且容易出错。更可靠的方式是使用 Python 自动完成转换。
本文将介绍如何使用 Spire.XLS for Python 将 Excel 转换为 Markdown。你将学习如何转换整个工作簿、导出指定工作表或单元格区域,以及如何通过简单的代码实现批量转换。
- 为什么要将 Excel 转换为 Markdown?
- 安装 Python Excel 转 Markdown 库
- Python 中 Excel 转 Markdown 的基础操作
- Excel 转 Markdown 的高级应用场景
- Excel 转 Markdown 最佳实践
- 总结
- 常见问题
为什么要将 Excel 转换为 Markdown?
将 Excel 表格转换为 Markdown 在以下场景中非常实用:
- 创建文档:将 Excel 表格嵌入 README 文件或 Wiki 页面。
- 配合 Git 使用:Markdown 是纯文本格式,相比 Excel 文件更容易进行版本控制和差异比较。
- 在线发布:将 Excel 数据用于博客、文档网站等内容平台。
- 便捷共享数据:Markdown 表格轻量且兼容性强,可在各种平台上轻松查看和使用。
安装 Python Excel 转 Markdown 库
要在 Python 中将 Excel 文件转换为 Markdown,请从 PyPI 安装 Spire.XLS for Python:
pip install spire.xls
Markdown 转换功能从 Spire.XLS for Python 16.4.0 开始提供支持。如果你使用的是较早版本,请先升级:
pip install --upgrade spire.xls
Python 中 Excel 转 Markdown 的基础操作
将 Excel 文件转换为 Markdown 最简单的方式是加载 Excel 工作簿,然后将其保存为 .md 文件。
整个过程只需三个步骤:
- 创建 Workbook 对象。
- 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
- 使用 Workbook.SaveToMarkdown() 方法保存为 Markdown 文件。
from spire.xls import Workbook
# 创建 Workbook 对象
workbook = Workbook()
# 加载 Excel 文件
workbook.LoadFromFile("report.xlsx")
# 保存为 Markdown 文件
workbook.SaveToMarkdown("output.md")
# 释放资源
workbook.Dispose()
输出示例:

Excel 转 Markdown 的高级应用场景
在实际项目中,你不一定总是需要转换整个工作簿。有时你可能希望自定义图片和超链接的导出方式、仅转换某一个工作表、导出指定的数据区域,或自动处理整个文件夹中的 Excel 文件。
下面将展示如何在 Python 中实现这些转换。
1. 自定义图片和超链接导出选项
将 Excel 导出为 Markdown 时,图片和超链接会被转换为对应的 Markdown 语法。你可以使用 MarkdownOptions 类中的属性来控制图片路径和超链接的导出方式。
| 属性 | 设置为 True | 设置为 False |
|---|---|---|
| SavePicInRelativePath | 使用相对路径保存图片,例如  | 使用绝对路径保存图片,例如  |
| SaveHyperlinkAsRef | 使用引用式链接,例如 [Link Text][ref1] | 使用内联链接,例如 [text](https://example.com) |
对于文档项目而言,通常推荐使用相对路径保存图片,因为 Markdown 文件和图片目录可以一起移动。而对于较小的 Markdown 文件,内联链接通常更直观、易于维护。
以下示例演示如何使用自定义选项将 Excel 转换为 Markdown:
from spire.xls import Workbook, MarkdownOptions
# 创建 Workbook 对象
workbook = Workbook()
# 加载 Excel 文件
workbook.LoadFromFile("sample.xlsx")
# 创建 MarkdownOptions 对象
markdown_options = MarkdownOptions()
# 使用相对路径保存图片
markdown_options.SavePicInRelativePath = True
# 使用内联链接保存超链接
markdown_options.SaveHyperlinkAsRef = False
# 保存为 Markdown 文件
workbook.SaveToMarkdown("custom_options.md", markdown_options)
# 释放资源
workbook.Dispose()
输出效果:

2. 将指定工作表转换为 Markdown
如果 Excel 工作簿中包含多个工作表,而你只需要导出其中一个,可以先使用 AddCopy() 方法将目标工作表复制到新的工作簿中,然后再保存为 Markdown 文件。
这样可以避免将不相关的工作表一起导出。
from spire.xls import Workbook
def convert_specific_sheet(excel_file, sheet_name, output_md):
"""
将指定工作表转换为 Markdown
"""
workbook = Workbook()
new_workbook = None
try:
# 加载 Excel 文件
workbook.LoadFromFile(excel_file)
# 根据名称查找工作表
worksheet = None
for ws in workbook.Worksheets:
if ws.Name == sheet_name:
worksheet = ws
break
if worksheet is None:
print(f"未找到工作表 '{sheet_name}'。")
return
# 创建仅包含目标工作表的新工作簿
new_workbook = Workbook()
new_workbook.Worksheets.Clear()
new_workbook.Worksheets.AddCopy(worksheet)
# 保存为 Markdown
new_workbook.SaveToMarkdown(output_md)
print(f"工作表 '{sheet_name}' 已成功转换为 {output_md}。")
finally:
if new_workbook is not None:
new_workbook.Dispose()
workbook.Dispose()
# 使用示例
convert_specific_sheet("report.xlsx", "Sheet 1", "sheet1.md")
3. 将指定单元格区域导出为 Markdown
有时你只需要导出工作表中的某个区域,例如汇总表、数据统计区域或报表中的某个部分。这种情况下,可以将目标区域复制到新的工作簿中,再导出为 Markdown。
以下示例将特定工作表中的选定区域转换为 Markdown 文件:
from spire.xls import Workbook, CopyRangeOptions
def convert_cell_range_to_markdown(excel_file, sheet_name, cell_range, output_md):
"""
将指定单元格区域转换为 Markdown
示例区域:"A1:C5"
"""
workbook = Workbook()
new_workbook = Workbook()
try:
# 加载原始 Excel 文件
workbook.LoadFromFile(excel_file)
# 获取目标工作表
worksheet = workbook.Worksheets[sheet_name]
if worksheet is None:
print(f"未找到工作表 '{sheet_name}'。")
return
# 获取源区域
src_range = worksheet.Range[cell_range]
# 创建空白工作表
new_workbook.CreateEmptySheets(1)
new_sheet = new_workbook.Worksheets[0]
# 创建对应大小的目标区域
dest_range = new_sheet.Range[
1, 1, src_range.Rows.Count, src_range.Columns.Count
]
# 复制数据、公式和格式
src_range.Copy(dest_range, CopyRangeOptions.All)
# 保存为 Markdown
new_workbook.SaveToMarkdown(output_md)
print(
f"工作表 '{sheet_name}' 中的区域 '{cell_range}' "
f"已成功转换为 {output_md}。"
)
except Exception as e:
print(f"发生错误:{e}")
finally:
new_workbook.Dispose()
workbook.Dispose()
# 使用示例
convert_cell_range_to_markdown(
"report.xlsx", "Sheet 1", "A1:C5", "cell_range.md"
)
这种方式特别适合只提取工作表中的关键数据,而无需导出整个工作表。
4. 批量转换多个 Excel 文件为 Markdown
对于大规模转换任务,你可以遍历文件夹,将所有 .xlsx 和 .xls 文件自动转换为 Markdown。
这在需要从多个报告生成文档、定期导出数据集或将 Excel 转 Markdown 集成到发布工作流时尤其有用。
from pathlib import Path
from spire.xls import Workbook
def batch_convert_excel_to_markdown(input_folder, output_folder):
"""
将文件夹中的所有 Excel 文件转换为 Markdown
支持格式:.xlsx、.xls
"""
input_dir = Path(input_folder)
output_dir = Path(output_folder)
# 创建输出目录
output_dir.mkdir(parents=True, exist_ok=True)
excel_extensions = {".xlsx", ".xls"}
converted_count = 0
for input_file in input_dir.iterdir():
if not input_file.is_file():
continue
if input_file.name.startswith("~$"):
continue
if input_file.suffix.lower() not in excel_extensions:
continue
output_file = output_dir / f"{input_file.stem}.md"
workbook = Workbook()
try:
workbook.LoadFromFile(str(input_file))
workbook.SaveToMarkdown(str(output_file))
converted_count += 1
print(f"已转换:{input_file.name} -> {output_file.name}")
except Exception as e:
print(f"转换 {input_file.name} 失败:{e}")
finally:
workbook.Dispose()
print(f"\n批量转换完成。共转换 {converted_count} 个文件。")
# 使用示例
batch_convert_excel_to_markdown("./excel_files", "./markdown_output")
Excel 转 Markdown 最佳实践
为了获得更整洁的 Markdown 输出,建议遵循以下原则:
- 尽量使用简单的表格结构。
- 如果目标是生成标准 Markdown 表格,建议取消合并单元格。
- 转换前删除无用的行和列。
- 在可移植文档项目中使用相对图片路径。
- 发布到 GitHub、Wiki 或静态网站之前,检查生成的 Markdown 文件格式是否正确。
总结
借助 Spire.XLS for Python,你可以通过极少量代码将 Excel 数据快速转换为 Markdown 文件。无论是文档生成、数据报表导出,还是自动化发布流程,这都是一种高效且实用的解决方案。
常见问题
问题1:哪些 Excel 格式可以转换为 Markdown?
答:常见的 Excel 格式(如 .xlsx 和 .xls)都可以加载并保存为 Markdown 文件。
问题2:转换为 Markdown 后图片会保留吗?
答:会。默认情况下,图片可以以 Base64 字符串形式嵌入 Markdown 输出中。你也可以配置导出选项,将图片保存为相对路径或绝对路径引用。
问题3:在 Python 中将 Excel 转换为 Markdown 是否需要 Microsoft Office?
答:不需要。Spire.XLS for Python 独立运行,无需安装 Microsoft Excel 或 Microsoft Office。
获取免费许可证
如需完全体验 Spire.XLS for Python 的全部功能且无评估限制,您可以申请免费的 30 天试用许可证。







