0.1.0 • Published 8 years ago

excelabl v0.1.0

Weekly downloads
1
License
LGPL-3.0
Repository
github
Last release
8 years ago

ExcelABL

What is this?

This is an interface for creating raw Microsoft Excel spreadsheets by hooking into Microsoft's 2003 SpreadsheetML schema using the Progress (a.k.a. ABL) programming language. There is no dependancy on the Windows Excel.exe COM interface or any such ugliness. This program writes raw .xml files which will open directly in Excel when double-clicked.

How to use it

  • You will need to add the com/abevoelker path to your PROPATH, so that the Excel and XML directories will be sitting at the top-level of your PROPATH. Otherwise, Progress won't understand what these objects are when you try to instantiate them.
  • An example.p file is included that shows a simple example of creating a spreadsheet using the library. For more advanced usage, the library code is generally well commented so don't be afraid to explore.

Errata

  • The created .xml files are very large, due to the verbosity of XML in general and the weirdness of SpreadsheetML in particular. I would highly recommend compressing them if you are going to send them remotely or do some type of long-term storage.
  • For massive documents (>10k rows), you may run into some memory-related issues. A lot of this has to do with the terrible memory management of the AVM. I had pondered creating some type of CellManager object to act as a FlyWeight for creating cells, but experimenting with it proved that it did not improve things very much at all. The main problem from my testing is that the AVM seems to reserve about 5KiB per CHARACTER variable, so Cell objects eat up a lot of memory no matter how primitive I can make them. The only way to get around this is to create a better CHARACTER datatype. At that point, you are better off migrating to a real programming language. To lessen the burden, be sure to flush the Cell objects into raw LONGCHAR using one of the Worksheet's flush methods every n rows (I typically flush about every 500 rows).

Donations

As always, hard work went into creating this product. If you use it and would like me to continue producing quality software please consider donating! Thank you!

License

ExcelABL is released under the LGPLv3 license.