Skip to content

Releases: DavisMcCracken/xlgrep

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 16:07

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 19:19

New

  • --header labels values with their column's header from row 1, or from row N with --header=N. In text output a hit reads Email: jsmith@contoso.com, and with --row every value is labeled. --json adds "header" for the hit, plus "row_headers" (keyed like "row_values") with --row, so an agent knows what a value is without reading the sheet. Hits in or above the header row aren't labeled. It can't be combined with -c, -l or --formulas.

Fixes

  • A file reached through more than one path argument is searched and printed once. This covers .. in a path, different case on Windows (a.xlsx A.XLSX), and a folder passed alongside a junction or symlink to it.

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 18:27

Changed behavior (check scripts that depend on it)

  • --formulas shows formulas as Excel does: =XLOOKUP(A1,B:B,C:C), not the _xlfn.XLOOKUP stored in the file. The same goes for _xlfn._xlws. (FILTER, SORT, …) and LAMBDA parameters (_xlpm.). Text in quotes and quoted sheet names are left as stored. Patterns or scripts that matched _xlfn. need updating.

New

  • On PyPI. uv tool install xlgrep or pipx install xlgrep, or uvx xlgrep … to run it without installing. The wheels hold the same binary (no Python code) for Linux (x86_64, arm64), Windows (x64, arm64) and macOS (Intel and Apple silicon), so macOS no longer needs cargo install.
  • Excel templates (.xltx, .xltm) are searched.

Full Changelog: v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 17:52

Changed behavior (check scripts that depend on these)

  • A --sheet name that no searched workbook has now exits 2 with xlgrep: no sheet named "…" in the searched files. It used to exit 1, as if the value just wasn't there.
  • --json values changed for times of day (14:30:00, was 1899-12-31 14:30:00) and for .ods durations and times (36:05:07, was PT36H05M07S).

Fixes

  • No more hangs on bad files. A workbook that crashes the reader (calamine panics on some malformed files) is skipped with a reason and exit 2. Before, xlgrep hung when enough files came after it (4 per CPU core), or else exited 101 and dropped later matches.
  • No more out-of-memory aborts. .xlsx and .xlsb sheets are streamed instead of loaded whole. A 5 KB file with one cell at XFD1048576 used to request 512 GiB and abort the process.
  • Colors in classic Windows consoles. cmd, Windows PowerShell, and pwsh outside Windows Terminal showed ←[1;31m instead of color. An empty NO_COLOR= no longer disables color, per no-color.org.
  • | head stops the search early, and piped output arrives as each file is searched instead of in 8 KiB chunks.
  • Sheet names that read as cells are quoted ('Q3'!B7, 'FY2024'!A1, 'R1C1'!C3), so refs paste into Excel's Name Box.
  • A path argument that can't be read shows the OS error unless it's simply missing.
  • The "N hits in M files" summary is colored only when stderr is a terminal, so 2>log doesn't collect escape codes.

Full Changelog: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 04:00