Skip to content

TeamworkGuy2/xlsx-spec-models

Repository files navigation

TypeScript XLSX Models

npm: xlsx-spec-models

TypeScript models for most of the OpenXML spreadsheet (XLSX) spec with methods to read/write from a DOM object.

The Open XML specification referenced throughout this project files can be found here: http://www.ecma-international.org/publications/standards/Ecma-376.htm Warning ~40MB PDF - ECMA-376 5th edition Part 1 Additional reference material: https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet?view=openxml-2.8.1

Usage

Alone these models are difficult to use. You need to construct a real or mock DOM 'document' and write the models to the document. There is a companion library xlsx-spec-utils which provides helpers to read and write XML.

Here is a Node.js example of reading an XML stream into a Workbook and writing it back to an XML string.

import { Workbook } from 'xlsx-spec-models/root-types/Workbook';
import { DomBuilderHelper } from '@twg2/dom-builder/dom/DomBuilderHelper'; // for mock DOM 'document' in Node.js runtime
import { XmlFileInst } from 'xlsx-spec-utils/files/XmlFileInst';

// Read from XML
const xmlStr = /* load XML */;
const dom = DomBuilderHelper.getParser().parseFromString(xmlStr, 'application/xml');
var xmlDoc = XmlFileInst.newInst(dom);
const myWorkbook = Workbook.read(xmlDoc, <HTMLElement>xmlDoc.dom.childNodes[0]);

// modify 'myWorkbook'...

// Write to XML
xmlDoc.removeChilds(<HTMLElement>(<Document>xmlDoc.dom).childNodes[0]);
var elem = Workbook.write(xmlDoc, myWorkbook);

var elemDom = <HTMLElement>(<Document>xmlDoc.dom).childNodes[0];
xmlDoc.addChilds(elemDom, xmlDoc.getChildNodes(elem));

const xmlText = DomBuilderHelper.getSerializer().serializeToString(xmlDoc.dom);
/* write 'xmlText' */

If you need a mock DOM 'document' in Node.js, you can use something like jsdom or a lightweight version created to accompany this library @twg2/dom-builder.

About

TypeScript Open XML XLSX format models with DOM read/write methods

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •