P R O J E K T YK O N T A K T

[11]

KONWERTER XLSX → WORD

TIER B · ROK 2026 · STATUS: DZIAŁA · JĘZYKI: TYPESCRIPT

Katalog szkoleń XLSX → Word ze stopkami per handlowiec, hurtem do ZIP

[FIG. 1] MISJA

Wewnętrzne narzędzie dla firmy szkoleniowej: zamienia katalog szkoleń z arkusza XLSX na sformatowane dokumenty Word z indywidualną stopką handlowca. SPA w React + Vite bez backendu — parsuje arkusz biblioteką `xlsx` (mapowanie kolumn po indeksie z fallbackiem po nagłówku), pokazuje wyszukiwalną listę produktów, a eksport robi chirurgicznie na surowym OOXML: podmienia `sectPr` dokumentu na zerowo-marginesowy `sectPr` stopki (PizZip), żeby pływające tabele i tło PNG trafiły co do piksela. Batch-export zaznaczonych produktów pakuje osobne pliki `.docx` do jednego ZIP-a. Odpalane przez `.vbs`/`.ps1`, więc nietechniczny użytkownik nie dotyka terminala.

[FIG. 2] ARCHITEKTURA

najedź na blok, by zobaczyć opis

[FIG. 2A] CHIRURGIA XML

oferta.docx → word/document.xml · PizZip · PACJENT OTWARTY

<w:body>

<w:p>…treść produktu z arkusza…</w:p>

<w:sectPr>

<w:pgMar w:top="1440" w:bottom="1440"/>

</w:sectPr>

+ <w:sectPr>

+ <w:pgMar w:top="0" w:bottom="0"/>

+ <w:footerReference r:id="rId7"/>

+ </w:sectPr>

</w:body>

najedź na linię diffu, by zobaczyć, czemu to chirurgia, a nie re-render

[FIG. 3] WYZWANIA

[+][CH-01]

Wierne osadzenie stopki — zamiast re-renderu, chirurgiczna podmiana `sectPr` i merge XML w `.docx`, żeby pływające tabele i tło PNG trafiły co do piksela.

[+][CH-02]

Nieregularny arkusz — mapowanie kolumn po indeksie z fallbackiem po słowach-kluczach nagłówka (pomijane A/B, dane dodatkowe X–AC tylko gdy niepuste).

[+][CH-03]

Batch bez marnowania I/O — szablon pobierany raz przed pętlą, współdzielony przez eksport pojedynczy i hurtowy; zaznaczone eksportują się też, gdy ukryje je filtr.

[FIG. 4] WARSTWA AI

Katalog szkoleń XLSX → Word ze stopkami per handlowiec, hurtem do ZIP

[FIG. 5] GALERIA

SCREENY W DRODZE — patrz SHOTS-WANTED

[FIG. 6] STACK & LINKI

REACTVITETYPESCRIPTTAILWIND V4XLSXPIZZIP (OOXML)FILE-SAVERMOTION