Note on extended features (styles, PivotTables, etc)
First off, we would like to thank the entire SheetJS community for the continued support over the years. The open source offerings are constantly improving, and thousands of developers in the community have found very clever and exciting use cases for their projects. We are always excited to see what you build, and are especially excited to find our building blocks in unexpected places like Facebook's React framework and the product website for Microsoft Office! We are truly humbled that a small project designed to solve a specific problem is useful for many people and is now one of the most popular open source projects on GitHub.
While it may seem like hacking a small feature like styles is easy, it quickly opens up a can of worms. There is quite a bit of interplay between styles and themes (e.g. indexed colors, theme + tint calculations); styles and number formats (some of the standard number formats use
[Red] and other color hints); styles and tables (alternating row colors); style inheritance; styles and rich text (Excel supports text cells where some of the text is bold or italic); and multi-format representations (even though XLSX and XLSB use similar representations, XLS has a different set of mechanisms, as does SpreadsheetML and ODS and HTML). Other efforts have offloaded the hard work to the user, requiring developers to pore over the various specifications or inspect test files to hack support, but our format-agnostic approach necessitates addressing those issues upfront.
We offer this in the Pro compendium. The sheer amount of work to make something as simple as styled HTML to XLSX conversion work seamlessly across Excel versions is not obvious at first blush, and we have worked with companies to discover undocumented constraints and corner cases. It would not be fair to any of our paying customers if we turned around and made the relevant features open source. We generally avoid discussing the Pro version because it seems inappropriate to discuss paid features in the context of the Community issue tracker.
At the end of the day, all work done on this open source project is charitable. In contrast to most popular and large open source projects, there are no banner ads on demo pages, no patreon or opencollective, no request for donations, no spyware or trackers or logos inserted into exported sheets, no VC backing SheetJS, nothing. We chose the very liberal Apache 2.0 License rather than try to trap companies with a license like Affero GPL. The Community Version is a passion project driven by true belief in open source, and we sacrificed thousands of hours and tens of thousands of dollars for development; testing computers and software; and documentation and support so that you and thousands of other people and companies can easily work with spreadsheets. In that spirit of open source, we continue to develop the Community version, adding features and fixing bugs