A C library for reading binary Excel (XLS) files with a command-line tool for converting XLS to CSV.
libxls is a C library that reads binary Excel files in the legacy XLS format, enabling developers to extract data from older Excel documents programmatically. It solves the problem of accessing data stored in the proprietary binary OLE format, which is not natively supported by many modern tools. The library includes a command-line utility, xls2csv, for converting XLS files to CSV.
Developers working in C or C++ who need to process legacy Excel data, such as in data migration scripts, embedded systems, or cross-platform applications. It's also useful for system administrators and data engineers handling older datasets.
Developers choose libxls for its focused, lightweight approach to parsing binary XLS files without external dependencies, its emphasis on security through fuzz testing, and its cross-platform compatibility. It provides a stable, error-resilient alternative to handling complex binary formats manually.
Read binary Excel files from C/C++
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Heavily fuzz-tested with clang's libFuzzer, fixing many CVEs and memory leaks from earlier versions, as emphasized in the README's release notes.
Designed to run on both little-endian and big-endian systems, with continuous integration tests on Mac, Linux, and Windows, ensuring broad compatibility.
Includes xls_open_buffer API for parsing files from memory buffers, useful for embedded or serverless applications where file I/O is limited.
Rewritten to return errors instead of exiting on malformed input, improving application stability and making it suitable for processing untrusted data.
Supports only the binary OLE XLS format, not modern XLSX or other Office Open XML formats, which severely limits its use with contemporary Excel files.
Installation requires autotools and running autogen.sh for git clones, adding setup overhead compared to drop-in libraries or package managers.
The API is in C, which may be cumbersome for modern C++ projects or developers preferring higher-level languages without relying on external bindings.