Skip to content

Captainpast/Scriptoffice.js

Repository files navigation

scriptOffice for JavaScript

scriptOffice.js

a library to create files of an office software suite like LibreOffice programmcity and automated

Using

NPM / YARN / PNPM

run one of the command in your nodejs project

$ npm i script-office
$ yarn add script-office
$ pnpm add script-office

add to file

import { OfficeDocument } from "script-office";

CDN

add to html head

<script src="https://cdn.jsdelivr.net/npm/script-office/dist/script-office.min.js"></script>

Documentation

Spreadsheet

creating a new document

var doc = OfficeDocument.create({ type: "spreadsheet" });
// or
var doc = OfficeDocument.create("spreadsheet");

// get the active and only sheet of the document
var sheet = doc.activeSheet;

importing an existing document

currently not supported

working with sheets

a spreadsheet can have multiple sheets

// get the current and active sheet
var sheet = doc.activeSheet;

// create sheet
var sheet = doc.addSheet("first");

// get sheet by index
var sheet = doc.getSheet(1);
// get sheet by name 
var sheet = doc.getSheet("first");

// set title
sheet.title = "first";

working with cells

single cell

// get cell
var cell = sheet.getCell("A1")
var cell = sheet.getCell({ col: "A", row: 1 })
var cell = sheet.getCell({ col: 1, row: 1 })

// set value
cell.value = "test";
cell.value = 2000;
cell.value = new Date();

// change style
cell.style.bold = true;
cell.style.italic = true;
cell.style.underline = "solid";
cell.style.underlineColor = "#ff0000";
cell.style.color = "reb(255,0,0)";
cell.style.backgroundColor = "red";
cell.style.columnWidth = 20;
cell.style.rowHeight = 10;

// at once
sheet.setCell("A1", {
  value: "test",
  style: {
    bold: true,
    underline: "dash"
  }
})

multiple cells

// get cells content
var content = sheet.getCells("A1:B3").map(c => c.value)

// set cells
sheet.setCells("A1:B3", { style: { backgroundColor: "#ff0000" } })

specials

sheet.freezeAt("A1")
sheet.autoFilter("A1", "K9")

export

there a several export formats:

OpenDocument spreadsheet (ods)

var data = await doc.export("ods", {
    compressionLevel: 9
});
fs.writeFileSync(path.join(__dirname, "test.ods"), Buffer.from(data))

Comma-separated values (csv)

only one sheet of the SpreadsheetDocument can be exported

var data = await doc.export("csv", {
    separator: ";",
    useQuotes: true,
    sheet: "name or index of the sheet"
});
fs.writeFileSync(path.join(__dirname, "test.csv"), data)

OfficeOpen spreadsheet (xlsx)

the export is very basic and not supports styles

var data = await doc.export("xlsx", {
    compressionLevel: 9
});
fs.writeFileSync(path.join(__dirname, "test.xlsx"), Buffer.from(data))

Build with webpack

cloning git repo and install dependencies

$ git clone https://gitlab.com/Captainpast/scriptoffice.js
$ cd scriptoffice.js
$ npm install

run dist script to create a minified and compact version

$ npm run dist

The release is now in the ./dist folder and can be imported.

import { OfficeDocument } from "./dist/script-office.min.js";

or

<script src="./dist/script-office.min.js"></script>

Roadmap

  • html export
  • imports
  • texts, drawings, presentations

About

mirror: https://gitlab.com/Captainpast/scriptoffice.js a library to create files of an office software suite like LibreOffice programmcity and automated

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published