UNPKG

@elbstack/xlsx-populate

Version:

Excel XLSX parser/generator written in JavaScript with Node.js and browser support, jQuery/d3-style method chaining, and a focus on keeping existing workbook features and styles in tact.

157 lines (149 loc) 11.8 kB
"use strict"; const XlsxPopulate = require('../../lib/XlsxPopulate'); // Load the input workbook from file. XlsxPopulate.fromBlankAsync() .then(workbook => { // // Modify the workbook. const sheet = workbook.sheet("Sheet1"); sheet.row(1).height(30); sheet.column('A').width(15); sheet.column('B').width(25); sheet.cell("A1").value("bold").style("bold", true) .relativeCell(1, 0).value("italic").style("italic", true) .relativeCell(1, 0).value("underline").style("underline", true) .relativeCell(1, 0).value("double underline").style("underline", "double") .relativeCell(1, 0).value("strikethrough").style("strikethrough", true) .relativeCell(1, 0).value("superscript").style("superscript", true) .relativeCell(1, 0).value("subscript").style("subscript", true) .relativeCell(1, 0).value("larger").style("fontSize", 14) .relativeCell(1, 0).value("smaller").style("fontSize", 8) .relativeCell(1, 0).value("comic sans").style("fontFamily", "Comic Sans MS") .relativeCell(1, 0).value("rgb font color").style("fontColor", "ff0000") .relativeCell(1, 0).value("theme font color").style("fontColor", 4) .relativeCell(1, 0).value("tinted theme font color").style("fontColor", { theme: 4, tint: -0.5 }) .relativeCell(1, 0).value("horizontal center").style("horizontalAlignment", "center") .relativeCell(1, 0).value("this text is justified distributed").style({ horizontalAlignment: "distributed", justifyLastLine: true }) .relativeCell(1, 0).value("indent").style("indent", 2) .relativeCell(1, 0).value("vertical center").style("verticalAlignment", "center") .relativeCell(1, 0).value("this text is wrapped text").style("wrapText", true) .relativeCell(1, 0).value("this text is shrink to fit").style("shrinkToFit", true) .relativeCell(1, 0).value("right-to-left").style("textDirection", "right-to-left") .relativeCell(1, 0).value("text rotation").style("textRotation", -10) .relativeCell(1, 0).value("angle counterclockwise").style("angleTextCounterclockwise", true) .relativeCell(1, 0).value("angle clockwise").style("angleTextClockwise", true) .relativeCell(1, 0).value("rotate text up").style("rotateTextUp", true) .relativeCell(1, 0).value("rotate text down").style("rotateTextDown", true) .relativeCell(1, 0).value("verticalText").style("verticalText", true) .relativeCell(1, 0).value("rgb solid fill").style("fill", "ff0000") .relativeCell(1, 0).value("theme solid fill").style("fill", 5) .relativeCell(1, 0).value("tinted theme solid fill").style("fill", { theme: 5, tint: 0.25 }) .relativeCell(1, 0).value("pattern fill").style("fill", { type: "pattern", pattern: "darkDown", foreground: "ff0000", background: { theme: 3, tint: 0.4 } }) .relativeCell(1, 0).value("linear gradient fill").style("fill", { type: "gradient", angle: 10, stops: [ { position: 0, color: "ff0000" }, { position: 0.5, color: "00ff00" }, { position: 1, color: "0000ff" } ] }) .relativeCell(1, 0).value("path gradient fill").style("fill", { type: "gradient", gradientType: "path", left: 0.1, right: 0.3, top: 0.5, bottom: 0.7, stops: [ { position: 0, color: "ff0000" }, { position: 1, color: "0000ff" } ] }) .relativeCell(1, 0).value("thin border").style("border", true) .relativeCell(1, 0).value("thick border").style("border", "thick") .relativeCell(1, 0).value("double blue border").style("border", { style: "double", color: "0000ff" }) .relativeCell(1, 0).value("right red border").style("rightBorder", true).style("borderColor", "ff0000") .relativeCell(1, 0).value("theme diagonal up border").style("diagonalBorder", { style: "dashed", color: { theme: 6, tint: -0.1 }, direction: "up" }) .relativeCell(1, 0).value("various styles border").style("borderStyle", { top: "hair", right: "thin", bottom: "medium", left: "thick" }) .relativeCell(1, 0).value("various colors border").style("border", "thick").style("borderColor", { top: "ff0000", right: "00ff00", bottom: "0000ff", left: "ffff00" }) .relativeCell(1, 0).value("complex border").style("border", { top: true, right: "thick", bottom: { style: "dotted", color: "ff0000" }, left: { style: "mediumDashed", color: 5 }, diagonal: { style: "thick", color: "0000ff", direction: "both" } }) .relativeCell(1, 0).value("number").relativeCell(0, 1).value(1.2).style("numberFormat", "0.00") .relativeCell(1, -1).value("currency").relativeCell(0, 1).value(1.2).style("numberFormat", `$#,##0.00`) .relativeCell(1, -1).value("accounting").relativeCell(0, 1).value(1.2).style("numberFormat", `_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)`) .relativeCell(1, -1).value("short date").relativeCell(0, 1).value(1.2).style("numberFormat", "m/d/yyyy") .relativeCell(1, -1).value("long date").relativeCell(0, 1).value(1.2).style("numberFormat", `[$-x-sysdate]dddd, mmmm dd, yyyy`) .relativeCell(1, -1).value("time").relativeCell(0, 1).value(1.2).style("numberFormat", `[$-x-systime]h:mm:ss AM/PM`) .relativeCell(1, -1).value("percentage").relativeCell(0, 1).value(1.2).style("numberFormat", "0.00%") .relativeCell(1, -1).value("fraction").relativeCell(0, 1).value(1.2).style("numberFormat", "# ?/?") .relativeCell(1, -1).value("scientific").relativeCell(0, 1).value(1.2).style("numberFormat", "0.00E+00") .relativeCell(1, -1).value("text").relativeCell(0, 1).value(1.2).style("numberFormat", "@"); console.log(sheet.row(1).height()); console.log(sheet.column('A').width()); console.log(sheet.column('B').width()); sheet.cell("A1").tap(cell => console.log(cell.value(), cell.style(["bold"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["italic"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["underline"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["underline"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["strikethrough"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["superscript"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["subscript"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["fontSize"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["fontSize"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["fontFamily"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["fontColor"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["fontColor"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["fontColor"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["horizontalAlignment"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["horizontalAlignment", "justifyLastLine"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["indent"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["verticalAlignment"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["wrapText"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["shrinkToFit"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["textDirection"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["textRotation"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["angleTextCounterclockwise"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["angleTextClockwise"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["rotateTextUp"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["rotateTextDown"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["verticalText"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["fill"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["fill"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["fill"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["fill"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["fill"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["fill"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["border"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["border"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["border"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["rightBorder", "borderColor"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["diagonalBorder"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["borderStyle"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["border"]))) .relativeCell(1, 0).tap(cell => console.log(cell.value(), cell.style(["border"]))) .relativeCell(1, 1).tap(cell => console.log(cell.relativeCell(0, -1).value(), cell.style(["numberFormat"]))) .relativeCell(1, 0).tap(cell => console.log(cell.relativeCell(0, -1).value(), cell.style(["numberFormat"]))) .relativeCell(1, 0).tap(cell => console.log(cell.relativeCell(0, -1).value(), cell.style(["numberFormat"]))) .relativeCell(1, 0).tap(cell => console.log(cell.relativeCell(0, -1).value(), cell.style(["numberFormat"]))) .relativeCell(1, 0).tap(cell => console.log(cell.relativeCell(0, -1).value(), cell.style(["numberFormat"]))) .relativeCell(1, 0).tap(cell => console.log(cell.relativeCell(0, -1).value(), cell.style(["numberFormat"]))) .relativeCell(1, 0).tap(cell => console.log(cell.relativeCell(0, -1).value(), cell.style(["numberFormat"]))) .relativeCell(1, 0).tap(cell => console.log(cell.relativeCell(0, -1).value(), cell.style(["numberFormat"]))) .relativeCell(1, 0).tap(cell => console.log(cell.relativeCell(0, -1).value(), cell.style(["numberFormat"]))) .relativeCell(1, 0).tap(cell => console.log(cell.relativeCell(0, -1).value(), cell.style(["numberFormat"]))); // Write to file. return workbook.toFileAsync("./out.xlsx"); });