📊 Cross-platform user-friendly xlsx library for C++11+
Go to file
TataMata 6b668fd04e
Fix for the "index out of bounds" exception while reading styles
There was a bug introduced in version 1.2 in reading styles. As from the Office Open XML documentation:
Every cell will have a reference to one <xf> in the <cellXfs> collection. This is direct formatting for the cell. To apply a style to the cell, the <xf> references the style using the xfId attribute. The xfId attribute is an index into the <cellStyleXFs> collection, which collects the cell styles available to the user. The <cellStyleXFs> contains one <xf> for each style. Each such <xf> is tied to its name via an index (in its xfId attribute) from the <cellStyles> collection. 
Existing implementation simply tried to fetch a style name by using index in the styles vector causing an index_out_of_range exception for each xfId that was ot of bounds of cellStyles collection. What was needed is to match the xfId attribute of the cellStyle element.
2017-11-06 12:00:51 +01:00
benchmarks add option to enable linking with static C runtime when compiling with MSVC, #214 2017-09-13 10:20:51 -04:00
cmake clean up cmake files and add d suffix to xlnt debug library, closes #214 2017-09-08 14:33:18 -04:00
docs generate man page from docs 2017-09-08 17:00:11 -04:00
include/xlnt fix empty row height/cell width, #235 2017-10-30 19:36:24 -04:00
logo delete logo.h 2017-09-05 20:51:18 +02:00
python (xlntpyarrow) check builder append return status and use double cell values instead of long double 2017-09-28 09:05:23 -04:00
samples add option to enable linking with static C runtime when compiling with MSVC, #214 2017-09-13 10:20:51 -04:00
source Fix bug in cell style assingment 2017-11-06 11:55:06 +01:00
tests Revert "add row height and column width serialization tests" 2017-10-30 19:53:39 -04:00
third-party forgot to add new option for libstudxml too 2017-09-13 10:30:38 -04:00
.appveyor.yml update ci scripts 2017-04-11 17:52:57 -04:00
.clang-format clang-format all source files, fix broken test helpers--lots of cleanup necessary as a result [ci skip] 2016-12-24 10:04:57 -05:00
.gitattributes clean up gitattributes 2016-11-09 17:24:47 -05:00
.gitignore clean up cmake files and add d suffix to xlnt debug library, closes #214 2017-09-08 14:33:18 -04:00
.gitmodules use externalproject instead of git submodules for dependencies 2017-03-02 08:41:17 -05:00
.travis.yml point lcov removal to the moved miniz file 2017-04-20 14:57:25 -04:00
AUTHORS.md Adding tpmccallum 2017-05-04 11:59:33 +10:00
book.json generate man page from docs 2017-09-08 17:00:11 -04:00
CHANGELOG.md start working on documentation [ci skip] 2017-04-12 10:17:26 -04:00
CMakeLists.txt add option to enable linking with static C runtime when compiling with MSVC, #214 2017-09-13 10:20:51 -04:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2017-09-08 23:09:35 -04:00
CONTRIBUTING.md Clarify how to contribute to the project 2016-09-07 18:36:36 -04:00
LICENSE.md update licenses 2017-09-08 15:26:47 -04:00
README.md swap readthedocs badge with gitbook badge [ci skip] 2017-09-10 09:45:06 -04:00
SUMMARY.md start working on documentation [ci skip] 2017-04-12 10:17:26 -04:00

xlnt logo

Travis Build Status AppVeyor Build status Coverage Status Documentation Status License

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.