office-chart
v1.0.27
Published
create office xlsx and pptx with tables and charts
Downloads
192
Maintainers
Readme
Create XLSX and PPTX with multi worksheets and charts
Node.js excel chart builder
Quick start
Install
npm install office-chart
Generate xlsx and write chart to file
import { IData } from "office-chart";
import { XlsxGenerator } from "office-chart";
const gen = new XlsxGenerator();
await gen.createWorkbook();
const sheet1 = await gen.createWorksheet("sheet1");
const sheet2 = await gen.createWorksheet("sheetWithChart2");
const header = ["h", "b", "c", "d"];
const row1 = ["label1", 2, 3, 4];
const row2 = ["label2", 5, 6, 7];
await sheet2.addTable([header, row1, row2]);
const opt: IData = {
title: {
name: "testChart line",
color: "8ab4f8",
size: 5000,
},
range: "B1:D3",
type: "line",
rgbColors: ["8ab4f8", "ff7769"],
labels: true, //table contains labels
marker: {
size: 4,
shape: "square", //marker shapes, can be circle, diamond, star
},
lineWidth: 20000,
};
await sheet2.addChart(opt);
const sheet3 = await gen.createWorksheet("sheet3");
await gen.generate(__dirname + "/test", "file");
// you can also generate buffer
Generate ppt with slides and text
import { PptxGenetator } from "office-chart";
import { IPPTChartData } from "office-chart/dist/xlsx/models/data.model";
const gen = new PptxGenetator();
await gen.createPresentation();
const slide = await gen.createSlide();
slide.addTitle("this is title", {
x: "0",
y: "0",
color: "FF0000",
size: 4000,
});
slide.addSubTitle("this is subtitle");
slide.addText("this is text", {
color: "FF0000",
});
const header = ["h", "b", "c", "d"];
const row1 = ["label1", 2, 3, 4];
const row2 = ["label2", 5, 6, 7];
await slide.addTable([header, row1, row2], {
x: "1000", // left
y: "1000", // top
colWidth: 1081250,
rowHeight: 1059279,
});
const opt: IPPTChartData = {
title: {
name: "testChart line",
color: "8ab4f8",
size: 3000,
},
type: "line",
data: [header, row1, row2], // can also be:
// [
// {
// name: 'lab1 test', //label
// values: [1, 2, 3, 4, 5], //yvalues
// labels: ['h', 'b', 'c', 'd', 'e'] //xvalue
// }, {
// name: 'lab2 test',
// values: [4, 5, 6, 7, 8],
// labels: ['h', 'b', 'c', 'd', 'e']
// }, {
// name: 'lab3 test',
// values: [9, 1, 2, 4, 10],
// labels: ['h', 'b', 'c', 'd', 'e']
// }
// ]
rgbColors: ["8ab4f8", "ff7769"],
lineWidth: 20000,
marker: {
shape: "circle",
size: 4,
},
labels: true,
};
const slide2 = await gen.createSlide();
await slide2.addChart(opt);
await slide2.addTitle(null); //remove title
await slide2.addSubTitle(null); //remove subtitle
await gen.generate(__dirname + "/test2", "file");