cef67bdc45
In case number_format() is called on a format that does not have format ID set, number_format() dereferences d_->parent->number_formats.end() causing a crash. This might happen when calling cell::is_date() on a cell that has type 'number' without a number format but some other styling set. This might never occur in spreadsheet files created by commercial applications but xlnt certainly allows to create such a file. We therefore fix number_format here by returning the general number format as a fallback. |
||
---|---|---|
.circleci | ||
benchmarks | ||
cmake | ||
docs | ||
include/xlnt | ||
logo | ||
python | ||
samples | ||
source | ||
tests | ||
third-party | ||
.appveyor.yml | ||
.clang-format | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.release-it.json | ||
AUTHORS.md | ||
book.json | ||
CHANGELOG.md | ||
CMakeLists.txt | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
LICENSE.md | ||
package-lock.json | ||
package.json | ||
README.md | ||
SUMMARY.md |
Introduction
xlnt is a modern C++ library for manipulating spreadsheets in memory and reading/writing them from/to XLSX files as described in ECMA 376 4th edition. The first public release of xlnt version 1.0 was on May 10th, 2017. Current work is focused on increasing compatibility, improving performance, and brainstorming future development goals. For a high-level summary of what you can do with this library, see the feature list. Contributions are welcome in the form of pull requests or discussions on the repository's Issues page.
Example
Including xlnt in your project, creating a new spreadsheet, and saving it as "example.xlsx"
#include <xlnt/xlnt.hpp>
int main()
{
xlnt::workbook wb;
xlnt::worksheet ws = wb.active_sheet();
ws.cell("A1").value(5);
ws.cell("B2").value("string data");
ws.cell("C3").formula("=RAND()");
ws.merge_cells("C3:C4");
ws.freeze_panes("B2");
wb.save("example.xlsx");
return 0;
}
// compile with -std=c++14 -Ixlnt/include -lxlnt
Documentation
Documentation for the current release of xlnt is available here.
License
xlnt is released to the public for free under the terms of the MIT License. See LICENSE.md for the full text of the license and the licenses of xlnt's third-party dependencies. LICENSE.md should be distributed alongside any assemblies that use xlnt in source or compiled form.