Introduction
Why another library to work with Excel XLSX in GO?
Truth be told, developing of any library starts with some personal goals of author. Someone wants simple library to read Excel files, someone wants to create a new file, other wants to add charts.
So what were the goals that time? It's a great pity, but I could not get a library that:
- respects existing data/formatting - no corrupted files or lost formatting
What if I need to open a well formatted file created with my favorite desktop application and update only one value?! I must get almost same file with just one updated value. None of existing library was able to do it. Corrupted file or lost formatting is common issue.
- works with big files - reasonable speed and memory footprint
Same here, someone could not open, others took forever to open with anomaly memory usage.
- consistent and as small API as possible with enough features set to do most common tasks - learning curve means something
Why?! Because it's not rocket science - open/create file, create/read/update/delete sheets/rows/cols and use styles. XLSX is quite simple format to read/write and GO has quite powerful xml encoder/decoder, so the hardest part - that API.
- easy to read/understand source code, easy to maintain, easy to contribute - no shadow places/hacks/magic, just read and understand
I was trying to contribute to existing libraries, but...actually it's much faster to create it from ground zero than to refactor existing and get satisfied results or fix some issues.
OOXML edition
XML is compliant with part 1 of the 5th edition of the ECMA-376 Standard for Office Open XML