python服务,主要功能为将 excel 导出为图片
Go to file
fuzhongyun e8862d2cb6 feat: add git pull 2025-12-29 16:47:12 +08:00
assets init 2025-12-29 16:36:36 +08:00
core init 2025-12-29 16:36:36 +08:00
tests init 2025-12-29 16:36:36 +08:00
.gitignore init 2025-12-29 16:36:36 +08:00
Dockerfile init 2025-12-29 16:36:36 +08:00
README.md init 2025-12-29 16:36:36 +08:00
app.py init 2025-12-29 16:36:36 +08:00
deploy.sh feat: add git pull 2025-12-29 16:47:12 +08:00
requirements.txt init 2025-12-29 16:36:36 +08:00

README.md

Excel2Pic API Service

这是一个轻量级的 Excel 转图片 API 服务,专为插件化部署设计。 它使用 FastAPI 构建,底层基于 openpyxlPillow (PIL) 实现高效的表格渲染,无需依赖任何 Office 组件或浏览器环境。

特性

  • 🚀 高性能:基于 FastAPI原生异步支持。
  • 📦 极轻量Docker 镜像体积 < 200MB。
  • 🎨 纯 Python 实现:无需 LibreOffice 或 Headless Chrome。
  • 🔠 中文支持:内置宋体和黑体支持,解决中文乱码问题。
  • 🐳 一键部署:提供 Dockerfile 和一键部署脚本。

目录结构

excel2pic/
├── app.py              # FastAPI 应用入口
├── core/               # 核心逻辑模块
│   ├── renderer.py     # 渲染引擎 (ExcelRenderer)
│   └── __init__.py
├── assets/             # 静态资源 (字体文件)
│   ├── simsun.ttc      # 宋体
│   └── simhei.ttf      # 黑体
├── tests/              # 单元测试
├── deploy.sh           # 一键部署脚本
├── Dockerfile          # Docker 构建文件
└── requirements.txt    # 项目依赖

快速开始

1. 本地运行

前置条件: Python 3.12+

# 1. 创建并激活虚拟环境
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
# .venv\Scripts\activate   # Windows

# 2. 安装依赖
pip install -r requirements.txt

# 3. 启动服务
uvicorn app:app --reload

2. Docker 部署

# 赋予执行权限
chmod +x deploy.sh

# 一键构建并启动
./deploy.sh

API 文档

启动服务后,访问 http://localhost:8000/docs 查看交互式 Swagger 文档。

核心接口

POST /api/v1/convert

将上传的 Excel 文件转换为 PNG 图片。

  • 参数:

    • file: (Required) Excel 文件 (.xlsx / .xls)
    • sheet_name: (Optional) 指定要转换的工作表名称,默认为活动工作表。
  • 响应:

    • Content-Type: image/png (直接返回图片二进制流)

示例调用 (cURL):

curl -X POST "http://localhost:8000/api/v1/convert" \
  -F "file=@/path/to/data.xlsx" \
  -F "sheet_name=Sheet1" \
  --output result.png

维护指南

添加新字体

  1. .ttf.ttc 文件放入 assets/ 目录。
  2. 修改 core/renderer.py 中的 __init__ 默认参数,或在初始化 ExcelRenderer 时传入路径。
  3. 重新构建 Docker 镜像。

运行测试

export PYTHONPATH=$PYTHONPATH:.
pytest tests/