Cách xuất Excel sang Markdown trong Python

Cách xuất Excel sang Markdown trong Python

Xuất dữ liệu Excel sang Markdown là một yêu cầu phổ biến cho các quy trình tài liệu, trình tạo README và quy trình công việc trang tĩnh. Aspose.Cells FOSS for Python thực hiện điều này bằng một phương thức duy nhất thông qua workbook.save_as_markdown(): không cần Microsoft Office.

Lưu ý: Aspose.Cells FOSS xuất ra XLSX, CSV, TSV, Markdown và JSON. Xuất PDF không phải là một phần của thư viện FOSS.

Tại sao xuất Excel sang Markdown với Aspose.Cells FOSS?

  1. Không phụ thuộc vào Office: Chuyển đổi hoàn toàn trong Python mà không cần COM gốc hoặc cài đặt Office.
  2. Hỗ trợ trong bộ nhớ: Tạo chuỗi Markdown mà không cần I/O đĩa nào bằng cách sử dụng MarkdownHandler.
  3. Đầu ra có thể tùy chỉnh: Cấu hình hành vi xuất qua MarkdownSaveOptions.
  4. Thân thiện với pipeline: Tích hợp trực tiếp vào các công cụ tạo tài liệu, trang tĩnh Hugo, hoặc quy trình làm việc GitHub Actions.

Hướng Dẫn Từng Bước

Bước 1: Cài đặt Aspose.Cells FOSS cho Python

Cài đặt thư viện từ PyPI bằng pip:

pip install aspose-cells-foss

Xác minh việc cài đặt:

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

Bước 2: Tạo Workbook và Điền dữ liệu

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

Bước 3: Xuất ra Markdown

Gọi workbook.save_as_markdown() với một đường dẫn đầu ra .md:

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

Kết quả là một bảng Markdown tiêu chuẩn:

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

Bước 4: Tùy chỉnh với 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)

Chuyển một thể hiện MarkdownSaveOptions tới save_as_markdown() để cấu hình.


Bước 5: Tạo Markdown trong bộ nhớ (Không có I/O tệp)

Sử dụng MarkdownHandler.save_markdown_to_string() để lấy Markdown dưới dạng chuỗi 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.

Bước 6: Tải một tệp XLSX hiện có và Xuất ra Markdown

from aspose.cells_foss import Workbook

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

Cái này giữ lại tất cả các giá trị ô và cấu trúc cơ bản. Lưu ý: Xuất Markdown chỉ đọc cell.value — các ô chỉ chứa công thức mà không có giá trị đã lưu sẽ hiển thị trống trong đầu ra. Thư viện không đánh giá công thức khi xuất. Để đảm bảo kết quả công thức hiển thị, hãy mở tệp trong Excel hoặc LibreOffice trước (điều này sẽ đánh giá và lưu trữ kết quả công thức), lưu dưới dạng XLSX, sau đó xuất lại.


Bước 7: Xử lý lỗi

Bao bọc các export trong khối try/except để sử dụng trong môi trường sản xuất:

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

Các vấn đề thường gặp và cách khắc phục

1. Đầu ra Markdown trống

Cause: Bảng tính không có ô nào được điền dữ liệu.
Fix: Xác nhận ws.cells["A1"].value đã được đặt và không phải None trước khi gọi save_as_markdown().

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

Nguyên nhân: Gói chưa được cài đặt hoặc đã sử dụng tên gói sai.
Cách khắc phục: Chạy pip install aspose-cells-foss. Lệnh import là from aspose.cells_foss import ... (gạch dưới, không phải dấu chấm).

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

Nguyên nhân: Bạn đã cài đặt gói sai (aspose-cells-python thay vì aspose-cells-foss).
Cách khắc phục: pip install aspose-cells-foss và xác nhận from aspose.cells_foss import Workbook.

4. Các vấn đề mã hoá trong tệp đầu ra

Nguyên nhân: Ghi chuỗi Markdown vào tệp mà không chỉ định mã hoá UTF-8.
Cách khắc phục: Sử dụng MarkdownHandler.save_markdown_to_string() và ghi một cách rõ ràng:

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

Câu hỏi thường gặp

Tôi có thể xuất sang PDF thay thế không?

Không. Xuất PDF không khả dụng trong Aspose.Cells FOSS. Sử dụng gói thương mại aspose-cells-python để xuất PDF.

Các định dạng đầu vào nào tôi có thể tải lên và sau đó xuất ra Markdown?

Các tệp XLSX và CSV có thể được tải lên bằng Workbook("file.xlsx") và sau đó xuất ra Markdown.

Làm sao để xuất chỉ một sheet khi có nhiều sheet?

Mặc định, save_as_markdown() xuất worksheet đầu tiên. Truyền một thể hiện MarkdownSaveOptions để cấu hình bổ sung.

Tôi có thể chạy điều này trên Linux hoặc macOS không?

Có. Thư viện chạy trên Windows, Linux và macOS mà không cần thiết lập đặc thù cho nền tảng nào.


Tài nguyên liên quan:

 Tiếng Việt