Как экспортировать Excel в Markdown на Python

Как экспортировать Excel в Markdown на Python

Экспорт данных Excel в Markdown является распространённой задачей для конвейеров документации, генераторов README и рабочих процессов статических сайтов. Aspose.Cells FOSS for Python делает это одним методом через workbook.save_as_markdown(): Microsoft Office не требуется.

Примечание: Aspose.Cells FOSS экспортирует в XLSX, CSV, TSV, Markdown и JSON. Экспорт в PDF не является частью библиотеки FOSS.

Почему экспортировать Excel в Markdown с помощью Aspose.Cells FOSS?

  1. Отсутствие зависимости от Office: Полностью преобразует в Python без нативного COM или установки Office.
  2. Поддержка в памяти: Генерировать строки Markdown без какого-либо ввода‑вывода на диск, используя MarkdownHandler.
  3. Настраиваемый вывод: Настраивать поведение экспорта через MarkdownSaveOptions.
  4. Удобно для конвейеров: Интегрировать напрямую в генераторы документации, статические сайты Hugo или рабочие процессы GitHub Actions.

Пошаговое руководство

Шаг 1: Установите Aspose.Cells FOSS для Python

Установите библиотеку из PyPI с помощью pip:

pip install aspose-cells-foss

Проверьте установку:

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

Шаг 2: Создать рабочую книгу и заполнить данные

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

Шаг 3: Экспорт в Markdown

Вызовите workbook.save_as_markdown() с выходным путём .md:

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

Вывод представляет собой стандартную таблицу Markdown:

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

Шаг 4: Настройка с помощью 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)

Передайте экземпляр MarkdownSaveOptions в save_as_markdown() для конфигурации.


Шаг 5: Генерация Markdown в памяти (без файлового ввода‑вывода)

Используйте MarkdownHandler.save_markdown_to_string(), чтобы получить Markdown в виде строки 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.

Шаг 6: Загрузить существующий XLSX и экспортировать в Markdown

from aspose.cells_foss import Workbook

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

Это сохраняет все значения ячеек и базовую структуру. Примечание: При экспорте в Markdown читается только cell.value — ячейки, содержащие только формулу без кэшированного значения, будут отображаться пустыми в выводе. Библиотека не вычисляет формулы во время экспорта. Чтобы результаты формул отображались, сначала откройте файл в Excel или LibreOffice (которые вычисляют и кэшируют результаты формул), сохраните как XLSX, затем выполните повторный экспорт.


Шаг 7: Обработка ошибок

Оборачивайте экспорты в блоки try/except для продакшн‑использования:

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

Распространённые проблемы и решения

1. Пустой вывод Markdown

Cause: Рабочий лист не содержит заполненных ячеек.
Fix: Подтвердите, что ws.cells["A1"].value установлен и None не установлен перед вызовом save_as_markdown().

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

Cause: Пакет не установлен или использовано неправильное имя пакета.
Fix: Запустите pip install aspose-cells-foss. Импорт выглядит так: from aspose.cells_foss import ... (подчеркивание, а не точка).

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

Cause: Вы установили неправильный пакет (aspose-cells-python вместо aspose-cells-foss).
Fix: pip install aspose-cells-foss и подтвердите from aspose.cells_foss import Workbook.

4. Проблемы кодировки в выходном файле

Cause: Запись строки Markdown в файл без указания кодировки UTF-8.
Fix: Используйте MarkdownHandler.save_markdown_to_string() и явно запишите:

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

Часто задаваемые вопросы

Можно ли экспортировать в PDF вместо этого?

Нет. Экспорт в PDF недоступен в Aspose.Cells FOSS. Используйте коммерческий пакет aspose-cells-python для вывода PDF.

Какие форматы ввода я могу загрузить, а затем экспортировать в Markdown?

Файлы XLSX и CSV можно загрузить с помощью Workbook("file.xlsx") и затем экспортировать в Markdown.

Как экспортировать только один лист, когда их несколько?

По умолчанию save_as_markdown() экспортирует первый лист. Передайте экземпляр MarkdownSaveOptions для дополнительной настройки.

Могу ли я запустить это на Linux или macOS?

Да. Библиотека работает на Windows, Linux и macOS без какой‑либо специфической настройки платформы.


Связанные ресурсы:

 Русский