Markdown 转 Excel 工具
一个强大的 Python 工具,用于将 Markdown 表格转换为格式精美的 Excel 文件。支持命令行和图形界面两种使用方式。
✨ 功能特性
- 📄 智能解析:自动识别和解析 Markdown 文件中的多个表格
- 🎨 精美样式:自动生成带有专业样式的 Excel 文件
- 标题行高亮显示
- 自适应列宽和行高
- 绿色边框标识第一列
- C、D 列居中对齐
- 🔄 多表格支持:每个 Markdown 表格转换为独立的工作表
- 💾 智能覆盖:自动处理同名文件,支持备份机制
- 🖥️ 双模式运行:支持命令行和图形界面两种方式
- 🌏 中文友好:完美支持中文字符和换行处理
📋 系统要求
- Python 3.7 或更高版本
- 支持的操作系统:Windows、Linux、macOS
🚀 快速开始
安装
# 克隆或下载项目后,进入项目目录
cd my_project
# 安装依赖
pip install openpyxl
# 或者使用 pyproject.toml 安装
pip install .
使用方法
方式一:命令行模式
# 交互式输入
python -m md_to_excel.md_to_excel
# 直接指定文件
python -m md_to_excel.md_to_excel input.md output.xlsx
# 仅指定输入文件(输出文件自动生成)
python -m md_to_excel.md_to_excel input.md
方式二:图形界面模式
# 启动 GUI
python -m md_to_excel.md_to_excel_gui
图形界面提供:
- 可视化文件选择
- 实时进度显示
- 友好的错误提示
- 一键转换操作
📖 使用示例
Markdown 输入示例
创建 example.md 文件:
# 示例文档
这是一个测试表格:
| 姓名 | 年龄 | 城市 | 职业 |
|------|------|------|------|
| 张三 | 25 | 北京 | 工程师 |
| 李四 | 30 | 上海 | 设计师 |
| 王五 | 28 | 广州 | 产品经理 |
另一个表格:
| 产品 | 价格 | 库存 |
|------|------|------|
| 手机 | 5999 | 100 |
| 电脑 | 8999 | 50 |
| 平板 | 3999 | 75 |
运行转换
python -m md_to_excel.md_to_excel example.md
生成的 example.xlsx 将包含两个工作表,每个表格都有专业的样式和格式。
🛠️ 技术细节
样式设计
- 标题行:浅蓝色背景 (#B4C6E7),加粗字体,居中对齐
- 数据行:白色背景,微软雅黑字体
- 边框:黑色细边框,第一列使用绿色边框突出
- 对齐方式:
- C、D 列:居中对齐
- 其他列:左对齐
- 冻结窗格:首行冻结,方便滚动查看
智能优化
- 列宽自适应:根据内容自动调整,最小 12,最大 50
- 行高自适应:根据换行数量动态调整
- 换行处理:自动将
<br>标签转换为 Excel 换行符 - 中文支持:中文字符按 2 倍宽度计算
📦 项目结构
my_project/
├── my_package/
│ ├── __init__.py
│ ├── md_to_excel.py # 核心转换逻辑
│ └── md_to_excel_gui.py # 图形界面
├── pyproject.toml # 项目配置
└── README.md # 项目说明
🔧 开发指南
安装开发依赖
pip install .[dev]
代码格式化
black md_to_excel/
运行测试
pytest tests/
🐛 常见问题
Q: 转换时提示"文件正被使用"?
A: 请关闭已打开的 Excel 文件后重试。程序会自动尝试生成备份文件。
Q: 表格没有被识别?
A: 确保 Markdown 表格格式正确,必须包含:
- 以
|开头和结尾 - 包含分隔符行(
|---|---|) - 单元格之间用
|分隔
Q: 如何自定义样式?
A: 修改 md_to_excel.py 中的 _create_styles() 函数即可自定义颜色、字体等样式。
Q: 支持哪些 Markdown 表格格式?
A: 支持标准的 GitHub Flavored Markdown 表格格式,包括:
- 基本表格
- 带对齐标记的表格
- 包含 HTML 换行标签的表格
📝 API 参考
主要函数
convert_md_to_excel(md_file_path, excel_file_path=None)
主转换函数
参数:
md_file_path(str): Markdown 文件路径excel_file_path(str, optional): Excel 输出文件路径,默认为 None(自动生成)
返回:
bool: 转换是否成功
示例:
from md_to_excel.md_to_excel import convert_md_to_excel
success = convert_md_to_excel("input.md", "output.xlsx")
if success:
print("转换成功!")
parse_markdown_tables(content)
从 Markdown 内容中解析表格
参数:
content(str): Markdown 文本内容
返回:
list: 表格数据列表
🤝 贡献指南
欢迎提交 Issue 和 Pull Request!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件
👤 作者
https://github.com/FovLucky-heng
🙏 致谢
- openpyxl - Excel 文件操作库
- 所有贡献者和使用者
📮 联系方式
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送邮件至:2956332991@qq.com
享受高效的 Markdown 到 Excel 转换体验! 🎉
Metadata
Release files for md-to-excel 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| md_to_excel-1.0.0.tar.gz | 5.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| md_to_excel-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.0 kB
Release files / md_to_excel-1.0.0.tar.gz
| Download URL | md_to_excel-1.0.0.tar.gz |
|---|---|
| Size | 5.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0bd3dbfc028541f2fa747220bef1134af9e374c1adcc7e0e9f830422e6930be2
|
|
BLAKE2b-256 checksum How to use checksums |
faea94998776ed149a9c587608ab4bc577c9d244ceb77e683aaeeab93a419a0a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / md_to_excel-1.0.0-py3-none-any.whl
| Download URL | md_to_excel-1.0.0-py3-none-any.whl |
|---|---|
| Size | 4.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0b31925435ee4d5fb33171dda640f5971b33ed0306bac527a50a260e4e3ccc6b
|
|
BLAKE2b-256 checksum How to use checksums |
5429812d278608220bf3beba7d3cc97989b21aea878dcb9f91cd5e2d91ed0240
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|