Constant memory streamed excel2csv conversion
Here is a crazy idea - what if your accountant's 5MB spreadsheet didn't OOM crash your server?
With excel2csv
end to end streaming aproach this might finally be possible! Instead of asking hundreds if not thousands of megabytes in memory, we rarely need more than 10, even for the most demanding enterprise™️ sheets
[~/code/excel2csv-cpp (main)] $ ./zig-out/bin/excel2csv
xlsxpath: 1 argument(s) expected. 0 provided.
Usage: excel2csv [--help] [--version] xlsxpath
Positional arguments:
xlsxpath Path to the Excel file to convert
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
Nope. Contributions welcome. If a cell type isn't implemented or You need support for a older excel version feel free to open up a PR or fork the project.
Get nix and set it up with direnv. Run:
direnv allow
This should download all package dependencies and set them up your current shell.
-
zig build cdb
- generates acompile_commands.json
file, useful if you want to use clangd LSP autocomplete -
zig build run -- myExcelFile.xlsx
- runs the application against the provided file -
zig build compile -Doptimize=ReleaseSmall
- generates the target executable to./zig-out/bin/excel2csv
-
zig build run-tests -- --test-case="excelRow2Csv"
- runs just "excelRow2Csv" test cases