@omegagrid/plugin-xlsx 0.9.37 → 0.9.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/export.d.ts.map +1 -1
- package/dist/export.js +6 -20
- package/dist/export.js.map +1 -1
- package/package.json +4 -4
package/dist/export.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAGA,OAAO,EACQ,SAAS,EACvB,KAAK,IAAI,OAAO,EAC8B,YAAY,EAE1D,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,KAAK,EAA8B,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGnH,OAAO,KAAK,MAAM,MAAM,MAAM,CAAC;AAC/B,OAAO,KAAK,EACX,UAAU,EAAE,OAAO,EAAiB,KAAK,EAAE,OAAO,EAClD,QAAQ,EAAE,SAAS,EACnB,MAAM,MAAM,CAAC;AAsCd,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,GAAI,OAAO,EAAE,CAO9F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,GAAI,OAAO,EAAE,CAW3F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,GAAI,KAAK,EAAE,CAyB3F;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,GAAI,UAAU,EAAE,EAAE,CAyBvG;AAuBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAuBlD;AAgBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,aAAa,GAAI,UAAU,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAGA,OAAO,EACQ,SAAS,EACvB,KAAK,IAAI,OAAO,EAC8B,YAAY,EAE1D,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,KAAK,EAA8B,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGnH,OAAO,KAAK,MAAM,MAAM,MAAM,CAAC;AAC/B,OAAO,KAAK,EACX,UAAU,EAAE,OAAO,EAAiB,KAAK,EAAE,OAAO,EAClD,QAAQ,EAAE,SAAS,EACnB,MAAM,MAAM,CAAC;AAsCd,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,GAAI,OAAO,EAAE,CAO9F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,GAAI,OAAO,EAAE,CAW3F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,GAAI,KAAK,EAAE,CAyB3F;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,GAAI,UAAU,EAAE,EAAE,CAyBvG;AAuBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAuBlD;AAgBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,aAAa,GAAI,UAAU,EAAE,EAAE,CA4ElG;AAYD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,SAAS,GAAI,iBAAiB,EAAE,CAiBrF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,GAAI,OAAO,GAAG,OAAO,CAa9E;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,SAAS,GAAI,MAAM,GAAG,OAAO,CAOhF;AAyBD,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC;;;;;;;EAW9D;AAqCD,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,aAAa,GAAI,SAAS,CA6B3F;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE,EAAE,aAAa,CAAC,EAAE,aAAa,4BAoChG;AAED,wBAAsB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAE,MAAa,gBAMrE"}
|
package/dist/export.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { utils, paper
|
|
2
|
+
import { utils, paper } from '@omegagrid/core';
|
|
3
3
|
import { encodeColumn, CalculationModel, isLogicalOperator, CellRange } from '@omegagrid/grid';
|
|
4
4
|
import { SheetjsLoader } from './loader';
|
|
5
5
|
const DEFAULT_BORDER_COLOR = 'aaaaaa';
|
|
@@ -229,25 +229,11 @@ export function getWorksheetCells(model, exportOptions) {
|
|
|
229
229
|
updateIndent(cellModel, cellObj);
|
|
230
230
|
if (cellModel.hasComment) {
|
|
231
231
|
const comments = cellModel.model.comments.get(cellModel.address);
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
if (!comment.text)
|
|
238
|
-
return;
|
|
239
|
-
const author = comment.author ? (comment.author.name ?? comment.author.id) : null;
|
|
240
|
-
let header = '';
|
|
241
|
-
if (author)
|
|
242
|
-
header = author;
|
|
243
|
-
if (comment.date)
|
|
244
|
-
header += (header ? ' - ' : '') + dates.format(comment.date, dates.getDateFormat(({ withTime: true })));
|
|
245
|
-
if (header)
|
|
246
|
-
sheetComment[0].R.push({ t: 's', v: header + "\n", s: { bold: true } });
|
|
247
|
-
sheetComment[0].R.push({ t: 's', v: comment.text + "\n" });
|
|
248
|
-
});
|
|
249
|
-
cellObj.c = sheetComment;
|
|
250
|
-
console.log(cellObj);
|
|
232
|
+
cellObj.c = comments.filter(comment => (comment.text ?? "").length > 0).map(comment => ({
|
|
233
|
+
a: comment.author ? (comment.author.name ?? comment.author.id) : '',
|
|
234
|
+
t: comment.text
|
|
235
|
+
}));
|
|
236
|
+
cellObj.c.hidden = true;
|
|
251
237
|
} // else if (cellModel.hasTooltip) {}
|
|
252
238
|
if ((cellObj.t == 'n' || cellObj.t == 'd') && cellObj.z == null) {
|
|
253
239
|
cellObj.z = cellModel.format ?? (cellObj.t == 'd' ? defaultDateFormat : 'General');
|
package/dist/export.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { utils, paper, dates } from '@omegagrid/core';\nimport {\n\tencodeColumn, GridModel, CalculationModel, isLogicalOperator,\n\tStyle as OGStyle, Border as OGBorder, CellType, \n\tCellModel, CellBorderStyle, Merge, CellRange, PrintOptions,\n\tConditionalFormatThreshold\n} from '@omegagrid/grid';\nimport { ExportOptions, ExportableGridModel, Style, Border, BorderStyle, Color, ConditionalFormat } from './types';\nimport { SheetjsLoader } from './loader';\n\nimport type XLSXNS from 'xlsx';\nimport type { \n\tCellObject, ColInfo, ExcelDataType, Range, RowInfo, \n\tWorkBook, WorkSheet, \n} from 'xlsx';\n\nconst DEFAULT_BORDER_COLOR = 'aaaaaa';\n\nconst DEFAULT_BORDER_STYLE: CellBorderStyle = {\n\tbottom: {style: 'thin', color: DEFAULT_BORDER_COLOR},\n\ttop: {style: 'thin', color: DEFAULT_BORDER_COLOR},\n\tright: {style: 'thin', color: DEFAULT_BORDER_COLOR},\n\tleft: {style: 'thin', color: DEFAULT_BORDER_COLOR}\n};\n\nconst DEFAULT_EXPORT_OPTIONS: ExportOptions = {\n\texportHiddenRows: true,\n\texportHiddenColumns: true,\n\tgridLines: true,\n\tdefaultBorders: false,\n\tdropdownCells: 'value'\n};\n\nconst headerCellStyle: Style = {\n\talignment: {vertical: 'center', horizontal: 'center'},\n\tbold: true\n}\n\nconst cellTypeMap: Record<CellType, ExcelDataType> = {\n\t'g': 'n',\n\t'b': 'b',\n\t't': 's',\n\t'n': 'n',\n\t'd': 'd',\n\t'dt': 'd',\n\t's': 's',\n\t'm': 's',\n\t'tm': 's',\n\t'h': 's',\n\t'a': 'z',\n};\n\nexport function getWorksheetColumns(model: GridModel, exportOptions: ExportOptions) : ColInfo[] {\n\tconst sourceColumns = exportOptions.exportHiddenColumns ? model.columns : model.visibleColumns;\n\treturn sourceColumns.map(column => ({\n\t\tlevel: column.level,\n\t\twpx: column.width,\n\t\thidden: column.visibleIndex == null || model.visibleColumns[column.visibleIndex] != column\n\t}));\n}\n\nexport function getWorksheetRows(model: GridModel, exportOptions: ExportOptions) : RowInfo[] {\n\tconst sourceRows = exportOptions.exportHiddenRows ? model.rows : model.visibleRows;\n\tconst offset = model.headerCount;\n\tconst rows: RowInfo[] = new Array(sourceRows.length + offset);\n\t[...Array(offset).keys()].map(r => rows[r] = {level: 0});\n\tsourceRows.map((row, r) => rows[r + offset] = {\n\t\tlevel: row.level,\n\t\thpt: row.height * 0.75,\n\t\thidden: row.visibleIndex == null || model.visibleRows[row.visibleIndex] != row\n\t});\n\treturn rows;\n}\n\nexport function getWorksheetMerges(model: GridModel, exportOptions: ExportOptions) : Range[] {\n\tconst offset = model.headerCount;\n\t// TODO - add same logic for rows\n\tconst colIndex = exportOptions.exportHiddenColumns \n\t\t? (cell: Merge) => cell.c\n\t\t: (cell: Merge) => model.columns[cell.c].visibleIndex;\n\n\tconst mergedCells: Range[] = [];\n\tmodel.merges.mergedCells.forEach(merge => {\n\t\t//if (model.merges.hiddenCells.get(cell.r)?.get(cell.c)) return;\n\t\tmergedCells.push({\n\t\t\ts: {c: colIndex(merge), r: merge.r + offset},\n\t\t\te: {c: colIndex(merge) + merge.cs - 1, r: merge.r + offset + merge.rs - 1}\n\t\t});\n\t});\n\n\tmodel.mergedHeaders.forEach(cell => {\n\t\tif (cell.h?.hidden) return;\n\t\tmergedCells.push({\n\t\t\ts: {c: colIndex(cell), r: cell.r},\n\t\t\te: {c: colIndex(cell) + cell.cs - 1, r: cell.r + cell.rs - 1}\n\t\t});\n\t});\n\n\treturn mergedCells;\n}\n\nexport function getWorksheetHeaderCells(model: GridModel, exportOptions: ExportOptions) : CellObject[][] {\n\tconst count = model.headerCount;\n\tconst sourceColumns = exportOptions.exportHiddenColumns ? model.columns : model.visibleColumns;\n\tconst defaultBorder = getDefaultBorderStyle(exportOptions);\n\n\treturn [...Array(count).keys()].map(r => sourceColumns.map((column) => {\n\t\tconst header = column.header[r];\n\t\tconst cell: CellObject = {t: header ? 's' : 'z', s: headerCellStyle};\n\t\tif (header) {\n\t\t\tif (header.html) cell.h = `<span>${header.label}</span>`;\n\t\t\telse if (header.label != null) cell.v = header.label;\n\t\t\telse cell.t = 'z';\n\t\t}\n\n\t\tif (defaultBorder) {\n\t\t\tif (!cell.s) cell.s = {};\n\t\t\tcell.s = Object.assign({}, defaultBorder, cell.s);\n\t\t}\n\n\t\tif (header._style != null) {\n\t\t\tcell.s = Object.assign({}, cell.s, convertStyle(model.styles.get(header._style)));\n\t\t}\n\n\t\treturn cell;\n\t}));\n}\n\nfunction convertStyleColor(color: string) : Color {\n\treturn {rgb: color};\n}\n\nfunction convertStyleBorder(border: OGBorder): Border {\n\tif (border.style == 'none') return null;\n\treturn {\n\t\tstyle: border.style as unknown as BorderStyle,\n\t\tcolor: convertStyleColor(border.color)\n\t};\n}\n\nfunction convertStyleCellBorder(border: CellBorderStyle): Style {\n\tconst s: Style = {};\n\tif (border.bottom) s.bottom = convertStyleBorder(border.bottom);\n\tif (border.top) s.top = convertStyleBorder(border.top);\n\tif (border.right) s.right = convertStyleBorder(border.right);\n\tif (border.left) s.left = convertStyleBorder(border.left);\n\treturn s;\n}\n\nexport function convertStyle(style: OGStyle): Style {\n\tconst s: Style & {angle?: number, stops?: {v: number, rgb: string}[]} = {};\n\tif (style.color) s.color = convertStyleColor(style.color);\n\tif (style.bgColor) s.bgColor = convertStyleColor(style.bgColor);\n\tif (style.fgColor) s.fgColor = convertStyleColor(style.fgColor);\n\tif (style.patternType) s.patternType = style.patternType;\n\n\tif (style.alignment) s.alignment = style.alignment;\n\tif (style.bold != null) s.bold = style.bold;\n\tif (style.sz) s.sz = style.sz;\n\n\tif (style.bottom) s.bottom = convertStyleBorder(style.bottom);\n\tif (style.top) s.top = convertStyleBorder(style.top);\n\tif (style.right) s.right = convertStyleBorder(style.right);\n\tif (style.left) s.left = convertStyleBorder(style.left);\n\n\tif (style.angle != null) s.angle = style.angle;\n\tif (style.stops) s.stops = style.stops.map(stop => ({\n\t\tv: stop.v,\n\t\trgb: stop.rgb\n\t}));\n\n\treturn s;\n}\n\nfunction updateIndent(cellModel: CellModel, cell: CellObject) {\n\tconst indent = cellModel.calculatedIndent;\n\tif (indent > 0) {\n\t\tif (!cell.s) cell.s = {};\n\t\tif (!cell.s.alignment) cell.s.alignment = {};\n\t\tcell.s.alignment.indent = indent;\n\t}\n}\n\nfunction getDefaultBorderStyle(exportOptions: ExportOptions) {\n\tconst defaultBorder = exportOptions.defaultBorders === true ? DEFAULT_BORDER_STYLE : exportOptions.defaultBorders as CellBorderStyle;\n\treturn defaultBorder ? convertStyleCellBorder(defaultBorder) : null;\n}\n\nexport function getWorksheetCells(model: GridModel, exportOptions?: ExportOptions) : CellObject[][] {\n\texportOptions = getExportOptions(exportOptions);\n\tconst hOffset = model.headerCount;\n\tconst calculations = new CalculationModel(model);\n\tconst data: CellObject[][] = new Array(hOffset + model.rows.length);\n\tconst styles = new Map<number, Style>();\n\tconst defaultBorder = getDefaultBorderStyle(exportOptions);\n\tconst defaultDateFormat = model.options.dateFormat || 'yyyy-MM-dd';\n\tconst dropdowDisplayValue = exportOptions.dropdownCells == 'displayValue';\n\n\tgetWorksheetHeaderCells(model, exportOptions).forEach((row, r) => data[r] = row);\n\tconst sourceRows = exportOptions.exportHiddenRows ? model.rows : model.visibleRows;\n\tconst sourceColumns = exportOptions.exportHiddenColumns ? model.columns : model.visibleColumns;\n\tsourceRows.forEach((row, r) => data[r + hOffset] = sourceColumns.map((column) => {\n\t\tconst cellModel = row.cell(column.index);\n\t\tconst t = cellTypeMap[cellModel.type];\n\t\tconst cellObj: CellObject = {t: cellModel.hasValue ? t : 'z'};\n\t\tif (cellModel.hasFormula) {\n\t\t\tif (hOffset > 0) {\n\t\t\t\t// TODO - shift connected models\n\t\t\t\tcellObj.f = calculations.getFormula(cellModel).clone().shift({index: 0, offset: hOffset, direction: 'down'}).toExcelString();\n\t\t\t} else {\n\t\t\t\tcellObj.f = (calculations\n\t\t\t\t\t? calculations.getFormula(cellModel).toExcelString()\n\t\t\t\t\t: cellModel.formula\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (cellModel.type == 'd') {\n\t\t\t\tcellObj.t = 'n';\n\t\t\t\tcellObj.z = cellModel.format ?? defaultDateFormat;\n\t\t\t}\n\t\t} else if (cellModel.hasValue && !cellModel.isSpilled) {\n\t\t\tif (cellObj.t == 's') {\n\t\t\t\tcellObj.v = dropdowDisplayValue ? cellModel.formattedValue.toString() : cellModel.value.toString();\n\t\t\t} else if (cellObj.t != 'z') {\n\t\t\t\tcellObj.v = cellModel.value as (string | number | boolean | Date);\n\t\t\t}\n\t\t\t\n\t\t\tif (cellModel.type == 'g') {\n\t\t\t\tcellObj.t = utils.isString(cellObj.v) ? 's' : 'n';\n\t\t\t} else if (cellModel.type == 'd') {\n\t\t\t\tif (utils.isNumber(cellObj.v)) cellObj.t = 'n';\n\t\t\t}\n\t\t\t// html: cell.h = `<span>${cellModel.value}</span>`;\n\t\t}\n\n\t\tconst style = cellModel.composedStyle;\n\t\tif (style) {\n\t\t\tif (!styles.has(style.id)) styles.set(style.id, convertStyle(style));\n\t\t\tcellObj.s = {...styles.get(style.id)};\n\t\t}\n\t\tupdateIndent(cellModel, cellObj);\n\n\t\tif (cellModel.hasComment) {\n\t\t\tconst comments = cellModel.model.comments.get(cellModel.address);\n\t\t\tconst sheetComment: any = [];\n\t\t\tsheetComment.push({R: []});\n\t\t\tsheetComment.hidden = true;\n\t\t\tsheetComment[\"!pos\"] = {x: 0, y: 0, w: 400, h: 200};\n\t\t\tcomments.forEach(comment => {\n\t\t\t\tif (!comment.text) return;\n\t\t\t\tconst author = comment.author ? (comment.author.name ?? comment.author.id) : null;\n\t\t\t\tlet header = '';\n\t\t\t\tif (author) header = author;\n\t\t\t\tif (comment.date) header += (header ? ' - ' : '') + dates.format(comment.date, dates.getDateFormat(({withTime: true})));\n\t\t\t\tif (header) sheetComment[0].R.push({t: 's', v: header + \"\\n\", s: {bold: true}});\n\t\t\t\tsheetComment[0].R.push({t: 's', v: comment.text + \"\\n\"});\n\t\t\t});\n\t\t\tcellObj.c = sheetComment;\n\t\t\tconsole.log(cellObj);\n\t\t} // else if (cellModel.hasTooltip) {}\n\n\t\tif ((cellObj.t == 'n' || cellObj.t == 'd') && cellObj.z == null) {\n\t\t\tcellObj.z = cellModel.format ?? (cellObj.t == 'd' ? defaultDateFormat : 'General');\n\t\t}\n\n\t\tif (defaultBorder) {\n\t\t\tif (!cellObj.s) cellObj.s = {};\n\t\t\tcellObj.s = Object.assign({}, defaultBorder, cellObj.s);\n\t\t}\n\t\t\n\t\treturn cellObj;\n\t}));\n\n\treturn data;\n}\n\nfunction convertConditionalFormatBoundry(cb: ConditionalFormatThreshold, def?: Partial<ConditionalFormatThreshold>) {\n\tif (!cb && !def) return null;\n\tcb = Object.assign({}, def, cb);\n\treturn {\n\t\tt: cb.t,\n\t\tv: cb.v,\n\t\tcolor: convertStyleColor(cb.color)\n\t};\n}\n\nexport function getWorksheetConditionalFormats(model: GridModel) : ConditionalFormat[] {\n\tconst hOffset = model.headerCount;\n\treturn model.conditionalFormats.getSourceData().map((item) => {\n\t\treturn {\n\t\t\tref: CellRange.fromA1s(item.ranges).map(range => range.shiftDown(0, hOffset, null, true).A1).join(' '),\n\t\t\tt: item.type,\n\t\t\tf: item.condition && isLogicalOperator(item.condition[0]) ? ('A1' + item.condition) : (item.condition ?? null),\n\t\t\ts: item.style ? convertStyle(item.style as OGStyle) : null,\n\t\t\tstop: item.stop,\n\t\t\tcmin: convertConditionalFormatBoundry(item.cmin, (item.type == 'bar' ? {t: 'min', color: item.color} : null)),\n\t\t\tcmid: item.cmid ? convertConditionalFormatBoundry(item.cmid, {v: 50, t: 'percentile'}) : null,\n\t\t\tcmax: convertConditionalFormatBoundry(item.cmax, (item.type == 'bar' ? {t: 'max', color: item.color} : null)),\n\t\t\tcolor: convertStyleColor(item.color),\n\t\t\tv: item.v,\n\t\t\tthresh: item.thresh\n\t\t};\n\t});\n}\n\nexport function detectOutlineRowDirection(model: GridModel) : 'above' | 'below' {\n\tif (model.options.rowTree.reversed) return 'below';\n\t\n\tconst rows = model.rows;\n\tif (rows.length < 2) return 'above';\n\n\tfor (let r = 1; r < rows.length; r++) {\n\t\tif (rows[r].level != rows[r - 1].level) {\n\t\t\treturn rows[r].parent == rows[r - 1] ? 'above' : 'below';\n\t\t}\n\t}\n\n\treturn model.rows[0].level > model.rows[1].level ? 'below' : 'above';\n}\n\nexport function detectOutlineColumnDirection(model: GridModel) : 'left' | 'right' {\n\tif (model.options.columnTree.reversed == null) {\n\t\tif (model.columns.length < 2) return 'left';\n\t\treturn model.columns[0].level > model.columns[1].level ? 'right' : 'left';\n\t} else {\n\t\treturn model.options.columnTree.reversed ? 'right' : 'left';\n\t}\n}\n\nconst getExportOptions = (exportOptions: ExportOptions) => {\n\tconst options = Object.assign({}, DEFAULT_EXPORT_OPTIONS, exportOptions);\n\tif (options.defaultBorders) options.defaultBorders = DEFAULT_BORDER_STYLE\n\treturn options;\n};\n\n/** convert mm to inch */\nconst mmToInch = (mm: number) => mm / 25.4;\n\n/** calculates scale to fit all columns on one page */\nfunction calculateScale(model: GridModel) {\n\tconst printOptions = model.options.print ?? {} as PrintOptions;\n\n\tconst paperSize = utils.isString(printOptions.paper) \n\t\t? (paper.PAPER_SIZES[printOptions.paper] ?? paper.PAPER_SIZES.A4)\n\t\t: printOptions.paper as paper.PaperSize;\n\n\tconst width = mmToInch(paperSize.width - printOptions.margins.left - printOptions.margins.right);\n\tconst columnWidth = model.columns.reduce((acc, column) => acc + column.width, 0) / 96;\n\t\n\treturn Math.round((width / columnWidth) * 100) - 2;\n}\n\nexport function convertMargins(margins: PrintOptions['margins']) {\n\tif (!margins) return null;\n\treturn {\n\t\ttop: mmToInch(margins.top),\n\t\tbottom: mmToInch(margins.bottom),\n\t\tleft: mmToInch(margins.left),\n\t\tright: mmToInch(margins.right),\n\t\theader: mmToInch(margins.header),\n\t\tfooter: mmToInch(margins.footer)\n\t};\n\n}\n\nfunction createPrintOptions(model: GridModel, exportOptions: ExportOptions) {\n\tconst options = model.options.print ?? {} as PrintOptions;\n\tconst printOptions: any = {props: {}};\n\tprintOptions.props.scale = options.scale ? options.scale : calculateScale(model);\n\tprintOptions.props.paper = options.paper;\n\tprintOptions.props.orientation = options.orientation;\n\tif (options.margins) printOptions.margins = convertMargins(options.margins);\n\n\t// printOptions.props.fit = {width: 1, height: 0}; // does not work!!!\n\t/*\n\t\"Fit Sheet on One page\"\t{ width: 1, height: 1 }\n\t\"Fit All Columns on One Page\"\t{ width: 1, height: 0 }\n\t\"Fit All Rows on One Page\"\t{ width: 0, height: 1 }\n\t*/\n\n\tconst rowBreaks = options.rowBreaks;\n\tif (rowBreaks?.length > 0) {\n\t\tprintOptions.rowBreaks = rowBreaks.map((row) => ({\n\t\t\tR: exportOptions.exportHiddenRows ? row : model.rows[row].visibleIndex,\n\t\t}));\n\n\t\tconst rowTitlesRange = model.options?.print?.rowTitles \n\t\t\t? CellRange.fromA1(model.options?.print?.rowTitles) : null;\n\n\t\tif (rowTitlesRange) {\n\t\t\tprintOptions.titles = {\n\t\t\t\ts: {r: rowTitlesRange.r1, c: -1},\n\t\t\t\te: {r: rowTitlesRange.r2, c: -1}\n\t\t\t};\n\t\t}\n\t}\n\t\n\treturn printOptions;\n}\n\nexport function createWorksheet(model: GridModel, exportOptions?: ExportOptions) : WorkSheet {\n\texportOptions = getExportOptions(exportOptions);\n\tconst ws: WorkSheet = {};\n\tws['!cols'] = getWorksheetColumns(model, exportOptions);\n\tws['!rows'] = getWorksheetRows(model, exportOptions);\n\tws['!merges'] = getWorksheetMerges(model, exportOptions);\n\tws['!condfmt'] = getWorksheetConditionalFormats(model);\n\n\tws['!outline'] = {\n\t\t'above': detectOutlineRowDirection(model) == 'above',\n\t\t'left': detectOutlineColumnDirection(model) == 'left'\n\t};\n\t\n\tif (model.options.freezeLeft || model.options.freezeTop) {\n\t\tws['!freeze'] = `${encodeColumn(model.options.freezeLeft)}${model.headerCount + model.options.freezeTop + 1}`;\n\t} else if (model.headerCount > 0) {\n\t\tws['!freeze'] = `A${model.headerCount + 1}`;\n\t}\n\t\n\tws['!gridlines'] = exportOptions.gridLines;\n\tws['!print'] = createPrintOptions(model, exportOptions);\n\n\t// if (model.tab?.color) ws['!tabcolor'] = convertStyleColor(model.tab.color); // does not work?\n\t\n\t// if (autoFilterStart) {\n\t// \tws['!autofilter'] = {ref: autoFilterStart + \":\" + autoFilterEnd};\n\t// }\n\n\treturn ws;\n}\n\nexport async function createWorkbook(models: ExportableGridModel[], exportOptions?: ExportOptions) {\n\tconst sheetjsPromise = SheetjsLoader.get();\n\tconst XLSX = sheetjsPromise instanceof Promise ? await sheetjsPromise : sheetjsPromise as typeof XLSXNS;\n\n\texportOptions = getExportOptions(exportOptions);\n\n\tconst wb = XLSX.utils.book_new();\n\tmodels.forEach((m, i) => {\n\t\tm.calculations.evaluateAll();\n\t\tconst modelExportOptions = {...exportOptions, ...m.exportOptions};\n\t\tconst ws = XLSX.utils.sheet_add_aoa(\n\t\t\tcreateWorksheet(m, modelExportOptions),\n\t\t\tgetWorksheetCells(m, modelExportOptions)\n\t\t);\n\n\t\t// ws[\"!protect\"] = {};\n\n\t\tlet name = m.name || `Sheet${i + 1}`;\n\t\tm.name = name;\n\t\tif (name.length > 31) name = name.substring(0, 31);\n\t\tXLSX.utils.book_append_sheet(wb, ws, name);\n\t});\n\n\twb.Workbook = wb.Workbook || {};\n\t// wb.Workbook.Protection = { lockStructure: true };\n\n\t// worksheet properties within workbook\n\tmodels.forEach(m => {\n\t\tconst index = wb.SheetNames.indexOf(m.name);\n\t\tif (index < 0) return;\n\t\tif (!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\t\tif (!wb.Workbook.Sheets[index]) wb.Workbook.Sheets[index] = {};\n\t\tif (m.tab?.hidden) wb.Workbook.Sheets[index].Hidden = 1;\n\t});\n\n\treturn wb;\n}\n\nexport async function exportXLSX(wb: WorkBook, filename: string = null) {\n\tconst sheetjsPromise = SheetjsLoader.get();\n\tconst XLSX = sheetjsPromise instanceof Promise ? await sheetjsPromise : sheetjsPromise as typeof XLSXNS;\n\treturn filename \n\t\t? XLSX.writeFile(wb, filename, {cellStyles: true, bookSST: true})\n\t\t: XLSX.writeXLSX(wb, {cellStyles: true, bookSST: true, type: 'buffer'});\n}"]}
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { utils, paper } from '@omegagrid/core';\nimport {\n\tencodeColumn, GridModel, CalculationModel, isLogicalOperator,\n\tStyle as OGStyle, Border as OGBorder, CellType, \n\tCellModel, CellBorderStyle, Merge, CellRange, PrintOptions,\n\tConditionalFormatThreshold\n} from '@omegagrid/grid';\nimport { ExportOptions, ExportableGridModel, Style, Border, BorderStyle, Color, ConditionalFormat } from './types';\nimport { SheetjsLoader } from './loader';\n\nimport type XLSXNS from 'xlsx';\nimport type { \n\tCellObject, ColInfo, ExcelDataType, Range, RowInfo, \n\tWorkBook, WorkSheet, \n} from 'xlsx';\n\nconst DEFAULT_BORDER_COLOR = 'aaaaaa';\n\nconst DEFAULT_BORDER_STYLE: CellBorderStyle = {\n\tbottom: {style: 'thin', color: DEFAULT_BORDER_COLOR},\n\ttop: {style: 'thin', color: DEFAULT_BORDER_COLOR},\n\tright: {style: 'thin', color: DEFAULT_BORDER_COLOR},\n\tleft: {style: 'thin', color: DEFAULT_BORDER_COLOR}\n};\n\nconst DEFAULT_EXPORT_OPTIONS: ExportOptions = {\n\texportHiddenRows: true,\n\texportHiddenColumns: true,\n\tgridLines: true,\n\tdefaultBorders: false,\n\tdropdownCells: 'value'\n};\n\nconst headerCellStyle: Style = {\n\talignment: {vertical: 'center', horizontal: 'center'},\n\tbold: true\n}\n\nconst cellTypeMap: Record<CellType, ExcelDataType> = {\n\t'g': 'n',\n\t'b': 'b',\n\t't': 's',\n\t'n': 'n',\n\t'd': 'd',\n\t'dt': 'd',\n\t's': 's',\n\t'm': 's',\n\t'tm': 's',\n\t'h': 's',\n\t'a': 'z',\n};\n\nexport function getWorksheetColumns(model: GridModel, exportOptions: ExportOptions) : ColInfo[] {\n\tconst sourceColumns = exportOptions.exportHiddenColumns ? model.columns : model.visibleColumns;\n\treturn sourceColumns.map(column => ({\n\t\tlevel: column.level,\n\t\twpx: column.width,\n\t\thidden: column.visibleIndex == null || model.visibleColumns[column.visibleIndex] != column\n\t}));\n}\n\nexport function getWorksheetRows(model: GridModel, exportOptions: ExportOptions) : RowInfo[] {\n\tconst sourceRows = exportOptions.exportHiddenRows ? model.rows : model.visibleRows;\n\tconst offset = model.headerCount;\n\tconst rows: RowInfo[] = new Array(sourceRows.length + offset);\n\t[...Array(offset).keys()].map(r => rows[r] = {level: 0});\n\tsourceRows.map((row, r) => rows[r + offset] = {\n\t\tlevel: row.level,\n\t\thpt: row.height * 0.75,\n\t\thidden: row.visibleIndex == null || model.visibleRows[row.visibleIndex] != row\n\t});\n\treturn rows;\n}\n\nexport function getWorksheetMerges(model: GridModel, exportOptions: ExportOptions) : Range[] {\n\tconst offset = model.headerCount;\n\t// TODO - add same logic for rows\n\tconst colIndex = exportOptions.exportHiddenColumns \n\t\t? (cell: Merge) => cell.c\n\t\t: (cell: Merge) => model.columns[cell.c].visibleIndex;\n\n\tconst mergedCells: Range[] = [];\n\tmodel.merges.mergedCells.forEach(merge => {\n\t\t//if (model.merges.hiddenCells.get(cell.r)?.get(cell.c)) return;\n\t\tmergedCells.push({\n\t\t\ts: {c: colIndex(merge), r: merge.r + offset},\n\t\t\te: {c: colIndex(merge) + merge.cs - 1, r: merge.r + offset + merge.rs - 1}\n\t\t});\n\t});\n\n\tmodel.mergedHeaders.forEach(cell => {\n\t\tif (cell.h?.hidden) return;\n\t\tmergedCells.push({\n\t\t\ts: {c: colIndex(cell), r: cell.r},\n\t\t\te: {c: colIndex(cell) + cell.cs - 1, r: cell.r + cell.rs - 1}\n\t\t});\n\t});\n\n\treturn mergedCells;\n}\n\nexport function getWorksheetHeaderCells(model: GridModel, exportOptions: ExportOptions) : CellObject[][] {\n\tconst count = model.headerCount;\n\tconst sourceColumns = exportOptions.exportHiddenColumns ? model.columns : model.visibleColumns;\n\tconst defaultBorder = getDefaultBorderStyle(exportOptions);\n\n\treturn [...Array(count).keys()].map(r => sourceColumns.map((column) => {\n\t\tconst header = column.header[r];\n\t\tconst cell: CellObject = {t: header ? 's' : 'z', s: headerCellStyle};\n\t\tif (header) {\n\t\t\tif (header.html) cell.h = `<span>${header.label}</span>`;\n\t\t\telse if (header.label != null) cell.v = header.label;\n\t\t\telse cell.t = 'z';\n\t\t}\n\n\t\tif (defaultBorder) {\n\t\t\tif (!cell.s) cell.s = {};\n\t\t\tcell.s = Object.assign({}, defaultBorder, cell.s);\n\t\t}\n\n\t\tif (header._style != null) {\n\t\t\tcell.s = Object.assign({}, cell.s, convertStyle(model.styles.get(header._style)));\n\t\t}\n\n\t\treturn cell;\n\t}));\n}\n\nfunction convertStyleColor(color: string) : Color {\n\treturn {rgb: color};\n}\n\nfunction convertStyleBorder(border: OGBorder): Border {\n\tif (border.style == 'none') return null;\n\treturn {\n\t\tstyle: border.style as unknown as BorderStyle,\n\t\tcolor: convertStyleColor(border.color)\n\t};\n}\n\nfunction convertStyleCellBorder(border: CellBorderStyle): Style {\n\tconst s: Style = {};\n\tif (border.bottom) s.bottom = convertStyleBorder(border.bottom);\n\tif (border.top) s.top = convertStyleBorder(border.top);\n\tif (border.right) s.right = convertStyleBorder(border.right);\n\tif (border.left) s.left = convertStyleBorder(border.left);\n\treturn s;\n}\n\nexport function convertStyle(style: OGStyle): Style {\n\tconst s: Style & {angle?: number, stops?: {v: number, rgb: string}[]} = {};\n\tif (style.color) s.color = convertStyleColor(style.color);\n\tif (style.bgColor) s.bgColor = convertStyleColor(style.bgColor);\n\tif (style.fgColor) s.fgColor = convertStyleColor(style.fgColor);\n\tif (style.patternType) s.patternType = style.patternType;\n\n\tif (style.alignment) s.alignment = style.alignment;\n\tif (style.bold != null) s.bold = style.bold;\n\tif (style.sz) s.sz = style.sz;\n\n\tif (style.bottom) s.bottom = convertStyleBorder(style.bottom);\n\tif (style.top) s.top = convertStyleBorder(style.top);\n\tif (style.right) s.right = convertStyleBorder(style.right);\n\tif (style.left) s.left = convertStyleBorder(style.left);\n\n\tif (style.angle != null) s.angle = style.angle;\n\tif (style.stops) s.stops = style.stops.map(stop => ({\n\t\tv: stop.v,\n\t\trgb: stop.rgb\n\t}));\n\n\treturn s;\n}\n\nfunction updateIndent(cellModel: CellModel, cell: CellObject) {\n\tconst indent = cellModel.calculatedIndent;\n\tif (indent > 0) {\n\t\tif (!cell.s) cell.s = {};\n\t\tif (!cell.s.alignment) cell.s.alignment = {};\n\t\tcell.s.alignment.indent = indent;\n\t}\n}\n\nfunction getDefaultBorderStyle(exportOptions: ExportOptions) {\n\tconst defaultBorder = exportOptions.defaultBorders === true ? DEFAULT_BORDER_STYLE : exportOptions.defaultBorders as CellBorderStyle;\n\treturn defaultBorder ? convertStyleCellBorder(defaultBorder) : null;\n}\n\nexport function getWorksheetCells(model: GridModel, exportOptions?: ExportOptions) : CellObject[][] {\n\texportOptions = getExportOptions(exportOptions);\n\tconst hOffset = model.headerCount;\n\tconst calculations = new CalculationModel(model);\n\tconst data: CellObject[][] = new Array(hOffset + model.rows.length);\n\tconst styles = new Map<number, Style>();\n\tconst defaultBorder = getDefaultBorderStyle(exportOptions);\n\tconst defaultDateFormat = model.options.dateFormat || 'yyyy-MM-dd';\n\tconst dropdowDisplayValue = exportOptions.dropdownCells == 'displayValue';\n\n\tgetWorksheetHeaderCells(model, exportOptions).forEach((row, r) => data[r] = row);\n\tconst sourceRows = exportOptions.exportHiddenRows ? model.rows : model.visibleRows;\n\tconst sourceColumns = exportOptions.exportHiddenColumns ? model.columns : model.visibleColumns;\n\tsourceRows.forEach((row, r) => data[r + hOffset] = sourceColumns.map((column) => {\n\t\tconst cellModel = row.cell(column.index);\n\t\tconst t = cellTypeMap[cellModel.type];\n\t\tconst cellObj: CellObject = {t: cellModel.hasValue ? t : 'z'};\n\t\tif (cellModel.hasFormula) {\n\t\t\tif (hOffset > 0) {\n\t\t\t\t// TODO - shift connected models\n\t\t\t\tcellObj.f = calculations.getFormula(cellModel).clone().shift({index: 0, offset: hOffset, direction: 'down'}).toExcelString();\n\t\t\t} else {\n\t\t\t\tcellObj.f = (calculations\n\t\t\t\t\t? calculations.getFormula(cellModel).toExcelString()\n\t\t\t\t\t: cellModel.formula\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (cellModel.type == 'd') {\n\t\t\t\tcellObj.t = 'n';\n\t\t\t\tcellObj.z = cellModel.format ?? defaultDateFormat;\n\t\t\t}\n\t\t} else if (cellModel.hasValue && !cellModel.isSpilled) {\n\t\t\tif (cellObj.t == 's') {\n\t\t\t\tcellObj.v = dropdowDisplayValue ? cellModel.formattedValue.toString() : cellModel.value.toString();\n\t\t\t} else if (cellObj.t != 'z') {\n\t\t\t\tcellObj.v = cellModel.value as (string | number | boolean | Date);\n\t\t\t}\n\t\t\t\n\t\t\tif (cellModel.type == 'g') {\n\t\t\t\tcellObj.t = utils.isString(cellObj.v) ? 's' : 'n';\n\t\t\t} else if (cellModel.type == 'd') {\n\t\t\t\tif (utils.isNumber(cellObj.v)) cellObj.t = 'n';\n\t\t\t}\n\t\t\t// html: cell.h = `<span>${cellModel.value}</span>`;\n\t\t}\n\n\t\tconst style = cellModel.composedStyle;\n\t\tif (style) {\n\t\t\tif (!styles.has(style.id)) styles.set(style.id, convertStyle(style));\n\t\t\tcellObj.s = {...styles.get(style.id)};\n\t\t}\n\t\tupdateIndent(cellModel, cellObj);\n\n\t\tif (cellModel.hasComment) {\n\t\t\tconst comments = cellModel.model.comments.get(cellModel.address);\n\t\t\tcellObj.c = comments.filter(comment => (comment.text ?? \"\").length > 0).map(comment => ({\n\t\t\t\ta: comment.author ? (comment.author.name ?? comment.author.id) : '',\n\t\t\t\tt: comment.text\n\t\t\t}));\n\t\t\tcellObj.c.hidden = true;\n\t\t} // else if (cellModel.hasTooltip) {}\n\n\t\tif ((cellObj.t == 'n' || cellObj.t == 'd') && cellObj.z == null) {\n\t\t\tcellObj.z = cellModel.format ?? (cellObj.t == 'd' ? defaultDateFormat : 'General');\n\t\t}\n\n\t\tif (defaultBorder) {\n\t\t\tif (!cellObj.s) cellObj.s = {};\n\t\t\tcellObj.s = Object.assign({}, defaultBorder, cellObj.s);\n\t\t}\n\t\t\n\t\treturn cellObj;\n\t}));\n\n\treturn data;\n}\n\nfunction convertConditionalFormatBoundry(cb: ConditionalFormatThreshold, def?: Partial<ConditionalFormatThreshold>) {\n\tif (!cb && !def) return null;\n\tcb = Object.assign({}, def, cb);\n\treturn {\n\t\tt: cb.t,\n\t\tv: cb.v,\n\t\tcolor: convertStyleColor(cb.color)\n\t};\n}\n\nexport function getWorksheetConditionalFormats(model: GridModel) : ConditionalFormat[] {\n\tconst hOffset = model.headerCount;\n\treturn model.conditionalFormats.getSourceData().map((item) => {\n\t\treturn {\n\t\t\tref: CellRange.fromA1s(item.ranges).map(range => range.shiftDown(0, hOffset, null, true).A1).join(' '),\n\t\t\tt: item.type,\n\t\t\tf: item.condition && isLogicalOperator(item.condition[0]) ? ('A1' + item.condition) : (item.condition ?? null),\n\t\t\ts: item.style ? convertStyle(item.style as OGStyle) : null,\n\t\t\tstop: item.stop,\n\t\t\tcmin: convertConditionalFormatBoundry(item.cmin, (item.type == 'bar' ? {t: 'min', color: item.color} : null)),\n\t\t\tcmid: item.cmid ? convertConditionalFormatBoundry(item.cmid, {v: 50, t: 'percentile'}) : null,\n\t\t\tcmax: convertConditionalFormatBoundry(item.cmax, (item.type == 'bar' ? {t: 'max', color: item.color} : null)),\n\t\t\tcolor: convertStyleColor(item.color),\n\t\t\tv: item.v,\n\t\t\tthresh: item.thresh\n\t\t};\n\t});\n}\n\nexport function detectOutlineRowDirection(model: GridModel) : 'above' | 'below' {\n\tif (model.options.rowTree.reversed) return 'below';\n\t\n\tconst rows = model.rows;\n\tif (rows.length < 2) return 'above';\n\n\tfor (let r = 1; r < rows.length; r++) {\n\t\tif (rows[r].level != rows[r - 1].level) {\n\t\t\treturn rows[r].parent == rows[r - 1] ? 'above' : 'below';\n\t\t}\n\t}\n\n\treturn model.rows[0].level > model.rows[1].level ? 'below' : 'above';\n}\n\nexport function detectOutlineColumnDirection(model: GridModel) : 'left' | 'right' {\n\tif (model.options.columnTree.reversed == null) {\n\t\tif (model.columns.length < 2) return 'left';\n\t\treturn model.columns[0].level > model.columns[1].level ? 'right' : 'left';\n\t} else {\n\t\treturn model.options.columnTree.reversed ? 'right' : 'left';\n\t}\n}\n\nconst getExportOptions = (exportOptions: ExportOptions) => {\n\tconst options = Object.assign({}, DEFAULT_EXPORT_OPTIONS, exportOptions);\n\tif (options.defaultBorders) options.defaultBorders = DEFAULT_BORDER_STYLE\n\treturn options;\n};\n\n/** convert mm to inch */\nconst mmToInch = (mm: number) => mm / 25.4;\n\n/** calculates scale to fit all columns on one page */\nfunction calculateScale(model: GridModel) {\n\tconst printOptions = model.options.print ?? {} as PrintOptions;\n\n\tconst paperSize = utils.isString(printOptions.paper) \n\t\t? (paper.PAPER_SIZES[printOptions.paper] ?? paper.PAPER_SIZES.A4)\n\t\t: printOptions.paper as paper.PaperSize;\n\n\tconst width = mmToInch(paperSize.width - printOptions.margins.left - printOptions.margins.right);\n\tconst columnWidth = model.columns.reduce((acc, column) => acc + column.width, 0) / 96;\n\t\n\treturn Math.round((width / columnWidth) * 100) - 2;\n}\n\nexport function convertMargins(margins: PrintOptions['margins']) {\n\tif (!margins) return null;\n\treturn {\n\t\ttop: mmToInch(margins.top),\n\t\tbottom: mmToInch(margins.bottom),\n\t\tleft: mmToInch(margins.left),\n\t\tright: mmToInch(margins.right),\n\t\theader: mmToInch(margins.header),\n\t\tfooter: mmToInch(margins.footer)\n\t};\n\n}\n\nfunction createPrintOptions(model: GridModel, exportOptions: ExportOptions) {\n\tconst options = model.options.print ?? {} as PrintOptions;\n\tconst printOptions: any = {props: {}};\n\tprintOptions.props.scale = options.scale ? options.scale : calculateScale(model);\n\tprintOptions.props.paper = options.paper;\n\tprintOptions.props.orientation = options.orientation;\n\tif (options.margins) printOptions.margins = convertMargins(options.margins);\n\n\t// printOptions.props.fit = {width: 1, height: 0}; // does not work!!!\n\t/*\n\t\"Fit Sheet on One page\"\t{ width: 1, height: 1 }\n\t\"Fit All Columns on One Page\"\t{ width: 1, height: 0 }\n\t\"Fit All Rows on One Page\"\t{ width: 0, height: 1 }\n\t*/\n\n\tconst rowBreaks = options.rowBreaks;\n\tif (rowBreaks?.length > 0) {\n\t\tprintOptions.rowBreaks = rowBreaks.map((row) => ({\n\t\t\tR: exportOptions.exportHiddenRows ? row : model.rows[row].visibleIndex,\n\t\t}));\n\n\t\tconst rowTitlesRange = model.options?.print?.rowTitles \n\t\t\t? CellRange.fromA1(model.options?.print?.rowTitles) : null;\n\n\t\tif (rowTitlesRange) {\n\t\t\tprintOptions.titles = {\n\t\t\t\ts: {r: rowTitlesRange.r1, c: -1},\n\t\t\t\te: {r: rowTitlesRange.r2, c: -1}\n\t\t\t};\n\t\t}\n\t}\n\t\n\treturn printOptions;\n}\n\nexport function createWorksheet(model: GridModel, exportOptions?: ExportOptions) : WorkSheet {\n\texportOptions = getExportOptions(exportOptions);\n\tconst ws: WorkSheet = {};\n\tws['!cols'] = getWorksheetColumns(model, exportOptions);\n\tws['!rows'] = getWorksheetRows(model, exportOptions);\n\tws['!merges'] = getWorksheetMerges(model, exportOptions);\n\tws['!condfmt'] = getWorksheetConditionalFormats(model);\n\n\tws['!outline'] = {\n\t\t'above': detectOutlineRowDirection(model) == 'above',\n\t\t'left': detectOutlineColumnDirection(model) == 'left'\n\t};\n\t\n\tif (model.options.freezeLeft || model.options.freezeTop) {\n\t\tws['!freeze'] = `${encodeColumn(model.options.freezeLeft)}${model.headerCount + model.options.freezeTop + 1}`;\n\t} else if (model.headerCount > 0) {\n\t\tws['!freeze'] = `A${model.headerCount + 1}`;\n\t}\n\t\n\tws['!gridlines'] = exportOptions.gridLines;\n\tws['!print'] = createPrintOptions(model, exportOptions);\n\n\t// if (model.tab?.color) ws['!tabcolor'] = convertStyleColor(model.tab.color); // does not work?\n\t\n\t// if (autoFilterStart) {\n\t// \tws['!autofilter'] = {ref: autoFilterStart + \":\" + autoFilterEnd};\n\t// }\n\n\treturn ws;\n}\n\nexport async function createWorkbook(models: ExportableGridModel[], exportOptions?: ExportOptions) {\n\tconst sheetjsPromise = SheetjsLoader.get();\n\tconst XLSX = sheetjsPromise instanceof Promise ? await sheetjsPromise : sheetjsPromise as typeof XLSXNS;\n\n\texportOptions = getExportOptions(exportOptions);\n\n\tconst wb = XLSX.utils.book_new();\n\tmodels.forEach((m, i) => {\n\t\tm.calculations.evaluateAll();\n\t\tconst modelExportOptions = {...exportOptions, ...m.exportOptions};\n\t\tconst ws = XLSX.utils.sheet_add_aoa(\n\t\t\tcreateWorksheet(m, modelExportOptions),\n\t\t\tgetWorksheetCells(m, modelExportOptions)\n\t\t);\n\n\t\t// ws[\"!protect\"] = {};\n\n\t\tlet name = m.name || `Sheet${i + 1}`;\n\t\tm.name = name;\n\t\tif (name.length > 31) name = name.substring(0, 31);\n\t\tXLSX.utils.book_append_sheet(wb, ws, name);\n\t});\n\n\twb.Workbook = wb.Workbook || {};\n\t// wb.Workbook.Protection = { lockStructure: true };\n\n\t// worksheet properties within workbook\n\tmodels.forEach(m => {\n\t\tconst index = wb.SheetNames.indexOf(m.name);\n\t\tif (index < 0) return;\n\t\tif (!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\t\tif (!wb.Workbook.Sheets[index]) wb.Workbook.Sheets[index] = {};\n\t\tif (m.tab?.hidden) wb.Workbook.Sheets[index].Hidden = 1;\n\t});\n\n\treturn wb;\n}\n\nexport async function exportXLSX(wb: WorkBook, filename: string = null) {\n\tconst sheetjsPromise = SheetjsLoader.get();\n\tconst XLSX = sheetjsPromise instanceof Promise ? await sheetjsPromise : sheetjsPromise as typeof XLSXNS;\n\treturn filename \n\t\t? XLSX.writeFile(wb, filename, {cellStyles: true, bookSST: true})\n\t\t: XLSX.writeXLSX(wb, {cellStyles: true, bookSST: true, type: 'buffer'});\n}"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omegagrid/plugin-xlsx",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.38",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"description": "Xlsx import/export plugin",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"_prepublish": "yarn test && yarn lint"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@omegagrid/core": "^0.9.
|
|
31
|
-
"@omegagrid/editor": "^0.9.
|
|
32
|
-
"@omegagrid/grid": "^0.9.
|
|
30
|
+
"@omegagrid/core": "^0.9.38",
|
|
31
|
+
"@omegagrid/editor": "^0.9.38",
|
|
32
|
+
"@omegagrid/grid": "^0.9.38",
|
|
33
33
|
"lit": "^3.1.1",
|
|
34
34
|
"lit-html": "^3.1.1",
|
|
35
35
|
"ts-debounce": "^4.0.0"
|