Skip to content

Конвертація Office-документів у HTML

Кожен handle Office Oxide має метод to_html(), що видає чистий семантичний HTML5 із будь-якого підтримуваного формату. Підходить для прев’ю в браузері, рендеру листів та швидких візуальних діфів.

Одноразовий виклик

Python

import office_oxide

html = office_oxide.to_html("report.docx")
open("report.html", "w").write(html)

Rust

use office_oxide::to_html;

let html = to_html("report.docx")?;
std::fs::write("report.html", html)?;

JavaScript

import { toHtml } from 'office-oxide';
import { writeFileSync } from 'node:fs';

writeFileSync('report.html', toHtml('report.docx'));

Go

html, err := officeoxide.ToHTML("report.docx")
os.WriteFile("report.html", []byte(html), 0o644)

C#

File.WriteAllText("report.html", OfficeOxide.ToHtml("report.docx"));

Перевикористання handle

Python

from office_oxide import Document

with Document.open("slides.pptx") as doc:
    html = doc.to_html()

JavaScript

using doc = Document.open('slides.pptx');
const html = doc.toHtml();

Rust

let doc = office_oxide::Document::open("slides.pptx")?;
let html = doc.to_html();

Що з’являється у виводі

HTML виходить у fragment-форматі — без обгорток <html>, <head>, <body>. Куди монтувати і яку таблицю стилів застосовувати — вирішуєте ви.

Джерело HTML-елемент
Заголовок <h1><h6> відповідного рівня
Абзац <p>
Жирний / курсив / підкреслення <strong>, <em>, <u>
Список <ul> / <ol> з дочірніми <li>
Таблиця <table> із <thead>, <tbody>, <tr>, <th>, <td>
Гіперпосилання <a href="...">
Зображення <img src="..." alt="...">
XLSX-лист <section data-sheet="ім'я"> + <table>
PPTX-слайд <section data-slide="N"> + body + опційний <aside> для нотаток

Вивід екранований: користувацький контент усередині документа HTML-екранується, тому вставляти результат у сторінку безпечно за замовчуванням.

Обгортка як standalone-сторінки

from office_oxide import Document

with Document.open("report.docx") as doc:
    body = doc.to_html()

page = f"""<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Звіт</title>
<link rel="stylesheet" href="docs.css">
</head><body>{body}</body></html>"""

open("report.html", "w").write(page)

Сценарії

  • Прев’ю в браузері для завантажених документів (<input type="file"> → WASM → <iframe srcdoc>).
  • Рендер листів для згенерованих звітів.
  • Diff-вьюхи — HTML-діфи осмислено відображаються в інструментах code review.
  • Індексація пошуком зі збереженням структури (заголовки можуть бустити результати).

Дивіться також