ScriptOffice for JavaScript
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";
add to html head
<script src="https://cdn.jsdelivr.net/npm/script-office/dist/script-office.umd.js"></script>
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;
currently not supported
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";
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" } })
sheet.freezeAt("A1")
sheet.autoFilter("A1", "K9")
there a several export formats:
var data = await doc.export("ods", {
compressionLevel: 9
});
fs.writeFileSync(path.join(__dirname, "test.ods"), Buffer.from(data))
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)
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))
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>
- html export
- imports
- texts, drawings, presentations