Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

Printscope

Find structural clues behind unexpected blank Excel print pages, without changing the workbook.

Open Printscope · 中文说明 · Testing notes · Releases

Choose a workbook, select a worksheet, and review the evidence next to the cell-coordinate map. Export a JSON report to keep the findings. Files are processed in a cancellable browser worker; nothing in the workbook is uploaded or changed.

Printscope inspecting a real sample workbook

The included sample has report values in A1:F24 and a value in M85 hidden by ;;;. Its print area includes both. Download the sample from the app and inspect M85 in Excel to check the diagnosis yourself.

What it checks

  • Declared, stored, populated and candidate-visible cell bounds, kept separate.
  • Values hidden by the exact custom number format ;;;.
  • Explicit white fonts, hidden rows/columns and errors configured to print blank.
  • Fixed print areas, multiple print areas and manual page breaks.
  • Cell-anchored drawings extending beyond the data.
  • Unsupported expressions and display features, reported as limitations instead of guessed results.

This is not a pagination engine. It cannot predict an exact page count, calculate formulas or establish that a workbook is safe to print. Always confirm changes in Excel's Page Break Preview. No cells are deleted and no workbook is rewritten.

Use the core

Node.js 22.13 or newer:

npm ci
npm test
npm run dev
import { readFile } from 'node:fs/promises';
import { inspectWorkbook } from './core/workbook.mjs';
const report = inspectWorkbook(new Uint8Array(await readFile('report.xlsx')));
console.log(JSON.stringify(report, null, 2));

Reports contain sheet names, cell addresses, print settings and findings, but not cell values or formula text. Treat reports as potentially sensitive metadata.

Boundaries

Ordinary unencrypted .xlsx only; no .xls, .xlsb or macro-enabled workbooks. Up to 20 MiB per file, 50 sheets, 100,000 stored cells, 100,000 shared strings and 20,000 styles. Each inspected XML part is bounded to 12 MiB, with 64 MiB of cumulative XML reads. ZIP directory, expanded size, checksum, XML nesting and node limits are checked. Nothing is extracted to the filesystem or fetched from workbook relationships.

Conditional formatting, theme colors, merged visual extents, legacy drawings, printer metrics and some inherited display settings are not evaluated. Candidate-visible bounds are a diagnostic reference, not a suggested replacement print area. Files hitting a limit fail with an explanation rather than returning a partial clean bill of health.

Background

Microsoft documents several causes of blank printed pages, including hidden-looking values, blank error printing and distant objects: Blank pages unexpectedly printed in Excel. The workbook reader follows the SpreadsheetML worksheet structure and PageSetup attributes.

Development and contributions

React, TypeScript, Vinext and Vite, with a framework-independent inspection core. fflate handles decompression and fast-xml-parser validates/parses XML. GitHub Actions tests, checks types and builds the static app before publishing to Pages. No application server or API key is needed.

npm run lint
npm run typecheck
npm run build

Reproducible edge cases are welcome. Do not attach a private workbook to a public issue: create a fresh, minimal workbook with invented values, or describe the relevant XML settings and your Excel version. Useful issues include the expected result, actual finding and a tiny sample that preserves the problem.

Use the workbook issue form and read the contribution guide for safe samples and regression checks.

MIT licensed. See third-party notices for reused components and icons.

About

Explain unexpected Excel print pages: inspect XLSX ranges, hidden values, print areas and distant drawings locally.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /