Drop an .xlsx / .xls / .csv file — every sheet becomes a PDF page.
or click to browse
.xlsx, legacy .xls, or plain .csv. SheetJS handles all three formats.Formulas render as their last-computed values. Charts and embedded images come through when stored in the spreadsheet. Cell formatting — currency, dates, bold, colour — is preserved across everyday cases. Conditional formatting and pivot-table interactivity render as their final static appearance, which is what you usually want when sharing the output.
If rows run wide, landscape orientation is the fix that works for most spreadsheets; for very wide sheets, splitting into narrower column groups before converting keeps every value legible at full size instead of shrinking the text to fit.
Yes. Each sheet tab in the workbook becomes its own section in the PDF — Sheet1 first, then Sheet2, etc. Hidden sheets are included unless you delete them in Excel first.
Yes. CSV is read as UTF-8. Indian rupee, yen, euro, and pound symbols all come through correctly.
Macros are skipped (there is no macro engine in the browser). Password-protected workbooks need to be unlocked in Excel first.
Very close for normal spreadsheets — cell formatting, column widths, embedded charts, and fonts all carry over. Excel's print engine has a few decades-old edge-case features (repeating print titles, manual page-break preview, print-area overrides) that mainly matter when you are preparing a fill-in form for physical printing. For the usual "send this workbook as a clean PDF" flow, the output matches what you see on screen.
Privacy: Spreadsheets are parsed with SheetJS, rendered via html2canvas, and written with pdf-lib — all inside your browser tab. No upload, no external processing.