[11]
XLSX → WORD CONVERTER
▓ TIER B · YEAR 2026 · STATUS: LIVE · LANGUAGES: TYPESCRIPT
XLSX training catalog → Word with per-rep footers, bulk to ZIP
[FIG. 1] MISSION
An internal tool for a training company: turns an XLSX training catalog into formatted Word docs with a per-salesperson footer. Backend-less React + Vite SPA — parses the sheet with `xlsx` (index-based column mapping with header fallback), shows a searchable product list, and exports by surgically editing raw OOXML: swapping the document's `sectPr` for the footer's zero-margin `sectPr` (PizZip) so floating tables and the PNG background land pixel-perfect. Batch export zips selected products into separate `.docx` files. Launched via `.vbs`/`.ps1` so a non-technical user never touches a terminal.
[FIG. 2] ARCHITECTURE
hover a block to see its description
[FIG. 2A] XML SURGERY
oferta.docx → word/document.xml · PizZip · PATIENT OPEN
<w:body>
<w:p>…product content from the sheet…</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>
→ hover a diff line to see why this is surgery, not a re-render
[FIG. 3] CHALLENGES
[+][CH-01]
Faithful footer embedding — a surgical `sectPr` swap and XML merge inside the `.docx` (not a re-render) so floating tables and the PNG background land pixel-perfect.
[+][CH-02]
Irregular spreadsheet — index-based column mapping with header-keyword fallback (skip A/B, extra data X–AC only when non-empty).
[+][CH-03]
Batch without wasted I/O — template fetched once before the loop, shared by single and bulk export; selected items export even when hidden by the filter.
[FIG. 4] AI LAYER
XLSX training catalog → Word with per-rep footers, bulk to ZIP
[FIG. 5] GALLERY
SCREENSHOTS INCOMING — see SHOTS-WANTED