Tool CLI và API đơn giản để chuyển file Excel thành ảnh PNG, mỗi sheet sẽ được xuất ra một ảnh riêng.
Mặc định tool dùng engine auto: ưu tiên render chất lượng cao bằng LibreOffice (giữ format gần với file gốc), nếu môi trường không có LibreOffice thì tự fallback về renderer đơn giản.
pip install -r requirements.txtpython excel_to_image.py input.xlsxMặc định, ảnh sẽ được xuất vào thư mục output nằm cùng cấp với file Excel.
--outputđể chỉ định thư mục xuất ảnh--sheetđể chỉ convert một hoặc nhiều sheet cụ thể--font-sizeđể chỉnh kích thước chữ của ô--title-font-sizeđể chỉnh kích thước tiêu đề sheet--engine auto|libreoffice|simpleđể chọn engine render--dpiđể chỉnh chất lượng ảnh khi dùng LibreOffice (mặc định 220)
Ví dụ:
python excel_to_image.py report.xlsx --output images --sheet Sheet1 --sheet SummaryVí dụ ép dùng chất lượng cao:
python excel_to_image.py report.xlsx --engine libreoffice --dpi 300Chạy local:
uvicorn api:app --host 0.0.0.0 --port 8000Endpoint chính:
GET /healthđể kiểm tra serverPOST /convertđể upload file Excel và nhận về một file ZIP chứa các ảnh PNG
Query tùy chọn cho POST /convert:
engine=auto|libreoffice|simpledpi=220(chỉ áp dụng cho LibreOffice)
Ví dụ n8n:
- Dùng node
HTTP Request - Method:
POST - Body Content Type:
Form-Data - Parameter Type:
n8n Binary File - Name:
file - Input Data Field Name:
data(hoặc tên binary property từ node trước) - URL:
http://your-server:8000/convert
Nếu muốn chỉ convert một số sheet, truyền query sheet=Sheet1 nhiều lần.
docker build -t excel2image .
docker run -p 8000:8000 excel2imageDocker image đã cài sẵn LibreOffice + pdftoppm để render chất lượng cao.
Nếu bạn cài qua giao diện Portainer, cách dễ nhất là dùng Stack:
- Vào Portainer ->
Stacks->Add stack. - Đặt tên stack, ví dụ
excel2image. - Chọn tab
Web editor. - Dán nội dung file
docker-compose.ymlvào. - Bấm
Deploy the stack.
Sau khi chạy xong, API sẽ lắng nghe ở port 8000.
Nếu bạn dùng node HTTP Request trong n8n, URL sẽ là:
http://<server-ip>:8000/convert
Kiểm tra nhanh:
GET http://<server-ip>:8000/health