# excelabl

> Utility to create Excel spread sheets

Latest version **0.1.0** (published 2016-11-02) · LGPL-3.0 license · 0 weekly downloads

## Install

```sh
npm install excelabl
pnpm add excelabl
yarn add excelabl
bun add excelabl
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.0 |
| Published | 2016-11-02 |
| First published | 2016-11-02 |
| Weekly downloads | 0 |
| License | LGPL-3.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | nischal.srinivas |
| Keywords | abl, openedge, excel |

## Links

- npm: https://www.npmjs.com/package/excelabl
- Repository: https://github.com/continuans/ExcelABL
- Homepage: https://github.com/continuans/ExcelABL#readme
- Issues: https://github.com/continuans/ExcelABL/issues
- npm.io page: https://npm.io/package/excelabl

## Alternatives

- [@lexical/table](https://npm.io/package/@lexical/table.md) — 3.0M weekly downloads
- [mantine-datatable](https://npm.io/package/mantine-datatable.md) — 98.2K weekly downloads
- [react-native-collapsible-tab-view](https://npm.io/package/react-native-collapsible-tab-view.md) — 70.6K weekly downloads
- [@handsontable/vue3](https://npm.io/package/@handsontable/vue3.md) — 16.1K weekly downloads
- [vuewordcloud](https://npm.io/package/vuewordcloud.md) — 7.2K weekly downloads

## Recent versions

- 0.1.0 (latest) — 2016-11-02

## README

ExcelABL
==========================

What is this?
--------------
This is an interface for creating raw Microsoft Excel spreadsheets by hooking into [Microsoft's 2003 SpreadsheetML][spreadsheetmlwikipedia] 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][donatesite]! Thank you!

License
--------
ExcelABL is released under the [LGPLv3][licensesite] license.

[spreadsheetmlwikipedia]: http://en.wikipedia.org/wiki/SpreadsheetML
[donatesite]: http://abevoelker.com/donate
[licensesite]: http://github.com/abevoelker/ExcelABL/blob/master/LICENSE

---
_Source: https://npm.io/package/excelabl · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
