Skip to content

Instantly share code, notes, and snippets.

@SheetJSDev SheetJSDev/note.md Secret
Created May 20, 2018

Embed
What would you like to do?

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 ❤️

@elad

This comment has been minimized.

Copy link

elad commented May 20, 2018

Hah, totally understandable. The complexity of Excel's historical baggage is no joke. Do I get a free pass for stepping into the fire? ;)

@SheetJSDev

This comment has been minimized.

Copy link
Owner Author

SheetJSDev commented May 20, 2018

Absolutely, and you should send an email! Also to be clear, this is not signaling an end to the open source, but rather a clarification on the purpose of the Community Version and defining the scope so that we can finally reach a version "1.0".

(p.s. the new @elad handle is much better than the older one :)

@jrdncchr

This comment has been minimized.

Copy link

jrdncchr commented Jul 2, 2018

Hi.. Since the style feature is in pro, I would like to confirm first that the code below will be allowed on pro version:
ws.B8.s = { alignment: { wrapText: true, vertical: 'center', horizontal: 'center' } };

Is that how it works?

@SheetJSDev

This comment has been minimized.

Copy link
Owner Author

SheetJSDev commented Jul 8, 2018

@jrdncchr send an email

@msillz

This comment has been minimized.

Copy link

msillz commented Aug 12, 2018

As a suggestion, I think you should make it more apparent in the README the features that the community version does not support.

Thank you for your work!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.