1. Why Copy-Paste From PDF Fails
PDFs store characters at exact X/Y coordinates — not rows and columns. When you copy-paste, columns collapse into one jumbled paragraph, dates split across lines, and numbers arrive as text that SUM() ignores. A proper PDF to Excel converter rebuilds structure: it groups text by visual rows (Y tolerance), splits columns by X gaps, and exports numbers as numeric cells.
That is why this tool offers three detection modes: Auto for mixed documents, Lines for bordered invoices and statements, and Spaced for borderless reports.
2. How Table Detection Actually Works
When you click Convert, the app first calls POST /api/pdf/to-excel with your file, page ranges and mode. The backend parses each selected page with pdfjs-dist, clusters words into rows, derives column breaks from whitespace gaps, and builds a styled workbook with ExcelJS — auto-width columns, borders, frozen header row, and numeric typing. Response headers X-Total-Rows and X-Sheet-Count tell the UI what was built.
If the API is unreachable, the same algorithm runs 100% on-device in your browser via ExcelJS — no upload needed.
Pro Tip: numbers must stay numeric
Always keep comma handling on. 1,250.00 should export as the number 1250, not the text "1,250.00" — otherwise your pivot tables silently undercount.
3. Step-by-Step Conversion Workflow
- Upload the PDF: drop your statement, invoice or report (up to plan limits).
- Preview pages: thumbnails render locally; deselect cover pages or terms & conditions.
- Choose mode: Auto first; retry with Lines for bordered tables or Spaced for borderless ones.
- Pick sheet layout: per-page sheets for audit trails, single sheet for consolidated analysis.
- Convert & download: backend first, offline fallback automatic — then open the .xlsx and filter.
4. Cleanup Tips for Formula-Ready Sheets
Freeze the header row (already done), apply Excel Table style (Ctrl+T), then use TEXTSPLIT or Flash Fill for any merged description columns. Validate totals against the PDF footer before sharing — a 30-second SUM check catches split rows on multi-line descriptions.