@visactor/vtable-export 0.18.0-alpha.0 → 0.18.0-alpha.2
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/cjs/excel/index.js +62 -6
- package/cjs/excel/index.js.map +1 -1
- package/cjs/excel/style.js +6 -6
- package/cjs/excel/style.js.map +1 -1
- package/cjs/index.d.ts +4 -4
- package/cjs/index.js +7 -11
- package/cjs/index.js.map +1 -1
- package/dist/vtable-export.js +203 -75812
- package/dist/vtable-export.min.js +36 -91
- package/es/excel/index.js +63 -3
- package/es/excel/index.js.map +1 -1
- package/es/excel/style.js +6 -6
- package/es/excel/style.js.map +1 -1
- package/es/index.d.ts +4 -4
- package/es/index.js +4 -4
- package/es/index.js.map +1 -1
- package/package.json +7 -6
package/cjs/excel/index.js
CHANGED
|
@@ -34,7 +34,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
34
34
|
value: !0
|
|
35
35
|
}), exports.exportVTableToExcel = void 0;
|
|
36
36
|
|
|
37
|
-
const exceljs_1 = __importDefault(require("exceljs")), encode_1 = require("../util/encode"), style_1 = require("./style");
|
|
37
|
+
const exceljs_1 = __importDefault(require("exceljs")), encode_1 = require("../util/encode"), style_1 = require("./style"), vtable_1 = require("@visactor/vtable"), vutils_1 = require("@visactor/vutils");
|
|
38
38
|
|
|
39
39
|
function exportVTableToExcel(tableInstance) {
|
|
40
40
|
return __awaiter(this, void 0, void 0, (function*() {
|
|
@@ -51,11 +51,7 @@ function exportVTableToExcel(tableInstance) {
|
|
|
51
51
|
const rowHeight = tableInstance.getRowHeight(row);
|
|
52
52
|
worksheet.getRow(row + 1).height = rowHeight;
|
|
53
53
|
}
|
|
54
|
-
|
|
55
|
-
encode_1.encodeCellAddress)(col, row));
|
|
56
|
-
cell.value = getCellValue(cellValue, cellType), cell.font = (0, style_1.getCellFont)(cellStyle, cellType),
|
|
57
|
-
cell.fill = (0, style_1.getCellFill)(cellStyle), cell.border = (0, style_1.getCellBorder)(cellStyle),
|
|
58
|
-
cell.alignment = (0, style_1.getCellAlignment)(cellStyle);
|
|
54
|
+
addCell(col, row, tableInstance, worksheet, workbook);
|
|
59
55
|
const cellRange = tableInstance.getCellRange(col, row);
|
|
60
56
|
if (cellRange.start.col !== cellRange.end.col || cellRange.start.row !== cellRange.end.row) {
|
|
61
57
|
const key = `${cellRange.start.col},${cellRange.start.row}:${cellRange.end.col},${cellRange.end.row}}`;
|
|
@@ -80,6 +76,55 @@ function exportVTableToExcel(tableInstance) {
|
|
|
80
76
|
}));
|
|
81
77
|
}
|
|
82
78
|
|
|
79
|
+
function addCell(col, row, tableInstance, worksheet, workbook) {
|
|
80
|
+
const {layoutMap: layoutMap} = tableInstance.internalProps, cellType = tableInstance.getCellType(col, row), cellValue = tableInstance.getCellValue(col, row), cellStyle = tableInstance.getCellStyle(col, row), cellLocation = tableInstance.getCellLocation(col, row), define = "body" !== cellLocation ? tableInstance.getHeaderDefine(col, row) : tableInstance.getBodyColumnDefine(col, row);
|
|
81
|
+
let icons, customRender, customLayout;
|
|
82
|
+
if (("body" !== cellLocation || (!!(null == define ? void 0 : define.icon) || !!(null == define ? void 0 : define.tree))) && (icons = tableInstance.getCellIcons(col, row)),
|
|
83
|
+
"body" !== cellLocation ? (customRender = null == define ? void 0 : define.headerCustomRender,
|
|
84
|
+
customLayout = null == define ? void 0 : define.headerCustomLayout) : (customRender = (null == define ? void 0 : define.customRender) || tableInstance.customRender,
|
|
85
|
+
customLayout = null == define ? void 0 : define.customLayout), "image" === cellType || "video" === cellType || "progressbar" === cellType || "sparkline" === cellType || layoutMap.isAxisCell(col, row) || (0,
|
|
86
|
+
vutils_1.isArray)(icons) && icons.length || customRender || customLayout) {
|
|
87
|
+
const cellImageBase64 = exportCellImg(col, row, tableInstance), imageId = workbook.addImage({
|
|
88
|
+
base64: cellImageBase64,
|
|
89
|
+
extension: "png"
|
|
90
|
+
});
|
|
91
|
+
worksheet.addImage(imageId, {
|
|
92
|
+
tl: {
|
|
93
|
+
col: col + 1 / 80,
|
|
94
|
+
row: row + 1 / 120
|
|
95
|
+
},
|
|
96
|
+
br: {
|
|
97
|
+
col: col + 1,
|
|
98
|
+
row: row + 1
|
|
99
|
+
},
|
|
100
|
+
editAs: "oneCell"
|
|
101
|
+
});
|
|
102
|
+
} else if ("text" === cellType || "link" === cellType) {
|
|
103
|
+
const cell = worksheet.getCell((0, encode_1.encodeCellAddress)(col, row));
|
|
104
|
+
cell.value = getCellValue(cellValue, cellType), cell.font = (0, style_1.getCellFont)(cellStyle, cellType),
|
|
105
|
+
cell.fill = (0, style_1.getCellFill)(cellStyle), cell.border = (0, style_1.getCellBorder)(cellStyle),
|
|
106
|
+
cell.alignment = (0, style_1.getCellAlignment)(cellStyle);
|
|
107
|
+
} else if ("chart" === cellType) {
|
|
108
|
+
const cellGroup = tableInstance.scenegraph.getCell(col, row);
|
|
109
|
+
(0, vtable_1.renderChart)(cellGroup.firstChild);
|
|
110
|
+
const cellImageBase64 = exportCellImg(col, row, tableInstance), imageId = workbook.addImage({
|
|
111
|
+
base64: cellImageBase64,
|
|
112
|
+
extension: "png"
|
|
113
|
+
});
|
|
114
|
+
worksheet.addImage(imageId, {
|
|
115
|
+
tl: {
|
|
116
|
+
col: col + 1 / 80,
|
|
117
|
+
row: row + 1 / 120
|
|
118
|
+
},
|
|
119
|
+
br: {
|
|
120
|
+
col: col + 1,
|
|
121
|
+
row: row + 1
|
|
122
|
+
},
|
|
123
|
+
editAs: "oneCell"
|
|
124
|
+
}), tableInstance.scenegraph.updateNextFrame();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
83
128
|
function getCellValue(cellValue, cellType) {
|
|
84
129
|
return "link" === cellType ? {
|
|
85
130
|
text: cellValue,
|
|
@@ -88,5 +133,16 @@ function getCellValue(cellValue, cellType) {
|
|
|
88
133
|
} : cellValue;
|
|
89
134
|
}
|
|
90
135
|
|
|
136
|
+
function exportCellImg(col, row, tableInstance) {
|
|
137
|
+
let cellGroup = tableInstance.scenegraph.getCell(col, row), needRemove = !1;
|
|
138
|
+
"empty" === cellGroup.role && (cellGroup = (0, vtable_1.updateCell)(col, row, tableInstance, !0),
|
|
139
|
+
needRemove = !0);
|
|
140
|
+
const oldStroke = cellGroup.attribute.stroke;
|
|
141
|
+
cellGroup.attribute.stroke = !1;
|
|
142
|
+
const canvas = vtable_1.graphicUtil.drawGraphicToCanvas(cellGroup, tableInstance.scenegraph.stage);
|
|
143
|
+
return cellGroup.attribute.stroke = oldStroke, needRemove && cellGroup.parent.removeChild(cellGroup),
|
|
144
|
+
canvas.toDataURL();
|
|
145
|
+
}
|
|
146
|
+
|
|
91
147
|
//# sourceMappingURL=index.js.map
|
|
92
148
|
exports.exportVTableToExcel = exportVTableToExcel;
|
package/cjs/excel/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["excel/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import ExcelJS from 'exceljs';\nimport { encodeCellAddress } from '../util/encode';\nimport type { CellType, IVTable } from '../util/type';\nimport { getCellAlignment, getCellBorder, getCellFill, getCellFont } from './style';\n\nexport async function exportVTableToExcel(tableInstance: IVTable) {\n const workbook = new ExcelJS.Workbook();\n const worksheet = workbook.addWorksheet('sheet1');\n worksheet.properties.defaultRowHeight = 40;\n\n const columns = [];\n const minRow = 0;\n const maxRow = tableInstance.rowCount - 1;\n const minCol = 0;\n const maxCol = tableInstance.colCount - 1;\n const mergeCells = [];\n const mergeCellSet = new Set();\n\n for (let col = minCol; col <= maxCol; col++) {\n const colWith = tableInstance.getColWidth(col);\n columns[col] = { width: colWith / 6 };\n for (let row = minRow; row <= maxRow; row++) {\n if (col === minCol) {\n const rowHeight = tableInstance.getRowHeight(row);\n const worksheetRow = worksheet.getRow(row + 1);\n // worksheetRow.height = rowHeight * 0.75;\n worksheetRow.height = rowHeight;\n }\n\n const cellValue = tableInstance.getCellValue(col, row);\n const cellStyle = tableInstance.getCellStyle(col, row);\n const cellType = tableInstance.getCellType(col, row);\n\n const cell = worksheet.getCell(encodeCellAddress(col, row));\n cell.value = getCellValue(cellValue, cellType);\n cell.font = getCellFont(cellStyle, cellType);\n cell.fill = getCellFill(cellStyle);\n cell.border = getCellBorder(cellStyle);\n cell.alignment = getCellAlignment(cellStyle);\n\n const cellRange = tableInstance.getCellRange(col, row);\n if (cellRange.start.col !== cellRange.end.col || cellRange.start.row !== cellRange.end.row) {\n const key = `${cellRange.start.col},${cellRange.start.row}:${cellRange.end.col},${cellRange.end.row}}`;\n if (!mergeCellSet.has(key)) {\n mergeCellSet.add(key);\n mergeCells.push(cellRange);\n }\n }\n }\n }\n\n worksheet.columns = columns;\n mergeCells.forEach(mergeCell => {\n worksheet.mergeCells(\n mergeCell.start.row + 1,\n mergeCell.start.col + 1,\n mergeCell.end.row + 1,\n mergeCell.end.col + 1\n );\n });\n\n // frozen\n const frozenView: ExcelJS.WorksheetViewFrozen[] = [];\n // top frozen\n if (tableInstance.frozenRowCount > 0) {\n frozenView.push({\n state: 'frozen',\n ySplit: tableInstance.frozenRowCount,\n // activeCell: 'A1',\n topLeftCell: encodeCellAddress(0, tableInstance.frozenRowCount)\n });\n }\n // left frozen\n if (tableInstance.frozenColCount > 0) {\n frozenView.push({\n state: 'frozen',\n xSplit: tableInstance.frozenColCount,\n // activeCell: 'A1',\n topLeftCell: encodeCellAddress(tableInstance.frozenColCount, 0)\n });\n }\n // not support bottom&right frozen\n worksheet.views = frozenView;\n\n const buffer = await workbook.xlsx.writeBuffer();\n return buffer;\n}\n\nfunction getCellValue(cellValue: string, cellType: CellType) {\n if (cellType === 'link') {\n return {\n text: cellValue,\n hyperlink: cellValue,\n tooltip: cellValue\n };\n }\n return cellValue;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["excel/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import ExcelJS from 'exceljs';\nimport { encodeCellAddress } from '../util/encode';\nimport type { CellType, IVTable } from '../util/type';\nimport { getCellAlignment, getCellBorder, getCellFill, getCellFont } from './style';\nimport { updateCell, renderChart, graphicUtil } from '@visactor/vtable';\nimport { isArray } from '@visactor/vutils';\n\nexport async function exportVTableToExcel(tableInstance: IVTable) {\n const workbook = new ExcelJS.Workbook();\n const worksheet = workbook.addWorksheet('sheet1');\n worksheet.properties.defaultRowHeight = 40;\n\n const columns = [];\n const minRow = 0;\n const maxRow = tableInstance.rowCount - 1;\n const minCol = 0;\n const maxCol = tableInstance.colCount - 1;\n const mergeCells = [];\n const mergeCellSet = new Set();\n\n for (let col = minCol; col <= maxCol; col++) {\n const colWith = tableInstance.getColWidth(col);\n columns[col] = { width: colWith / 6 };\n for (let row = minRow; row <= maxRow; row++) {\n if (col === minCol) {\n const rowHeight = tableInstance.getRowHeight(row);\n const worksheetRow = worksheet.getRow(row + 1);\n // worksheetRow.height = rowHeight * 0.75;\n worksheetRow.height = rowHeight;\n }\n\n addCell(col, row, tableInstance, worksheet, workbook);\n\n const cellRange = tableInstance.getCellRange(col, row);\n if (cellRange.start.col !== cellRange.end.col || cellRange.start.row !== cellRange.end.row) {\n const key = `${cellRange.start.col},${cellRange.start.row}:${cellRange.end.col},${cellRange.end.row}}`;\n if (!mergeCellSet.has(key)) {\n mergeCellSet.add(key);\n mergeCells.push(cellRange);\n }\n }\n }\n }\n\n worksheet.columns = columns;\n mergeCells.forEach(mergeCell => {\n worksheet.mergeCells(\n mergeCell.start.row + 1,\n mergeCell.start.col + 1,\n mergeCell.end.row + 1,\n mergeCell.end.col + 1\n );\n });\n\n // frozen\n const frozenView: ExcelJS.WorksheetViewFrozen[] = [];\n // top frozen\n if (tableInstance.frozenRowCount > 0) {\n frozenView.push({\n state: 'frozen',\n ySplit: tableInstance.frozenRowCount,\n // activeCell: 'A1',\n topLeftCell: encodeCellAddress(0, tableInstance.frozenRowCount)\n });\n }\n // left frozen\n if (tableInstance.frozenColCount > 0) {\n frozenView.push({\n state: 'frozen',\n xSplit: tableInstance.frozenColCount,\n // activeCell: 'A1',\n topLeftCell: encodeCellAddress(tableInstance.frozenColCount, 0)\n });\n }\n // not support bottom&right frozen\n worksheet.views = frozenView;\n\n const buffer = await workbook.xlsx.writeBuffer();\n return buffer;\n}\n\nfunction addCell(\n col: number,\n row: number,\n tableInstance: IVTable,\n worksheet: ExcelJS.Worksheet,\n workbook: ExcelJS.Workbook\n) {\n const { layoutMap } = tableInstance.internalProps;\n const cellType = tableInstance.getCellType(col, row);\n const cellValue = tableInstance.getCellValue(col, row);\n const cellStyle = tableInstance.getCellStyle(col, row);\n\n const cellLocation = tableInstance.getCellLocation(col, row);\n const define =\n cellLocation !== 'body' ? tableInstance.getHeaderDefine(col, row) : tableInstance.getBodyColumnDefine(col, row);\n const mayHaveIcon = cellLocation !== 'body' ? true : !!define?.icon || !!define?.tree;\n let icons;\n if (mayHaveIcon) {\n icons = tableInstance.getCellIcons(col, row);\n }\n let customRender;\n let customLayout;\n if (cellLocation !== 'body') {\n customRender = define?.headerCustomRender;\n customLayout = define?.headerCustomLayout;\n } else {\n customRender = define?.customRender || tableInstance.customRender;\n customLayout = define?.customLayout;\n }\n\n if (\n cellType === 'image' ||\n cellType === 'video' ||\n cellType === 'progressbar' ||\n cellType === 'sparkline' ||\n layoutMap.isAxisCell(col, row) ||\n (isArray(icons) && icons.length) ||\n customRender ||\n customLayout\n ) {\n const cellImageBase64 = exportCellImg(col, row, tableInstance);\n const imageId = workbook.addImage({\n base64: cellImageBase64,\n extension: 'png'\n });\n worksheet.addImage(imageId, {\n tl: { col: col + 1 / 80, row: row + 1 / 120 } as any, // ~1px\n br: { col: col + 1, row: row + 1 } as any,\n editAs: 'oneCell'\n // ext: { width: tableInstance.getColWidth(col), height: tableInstance.getRowHeight(row) }\n });\n } else if (cellType === 'text' || cellType === 'link') {\n const cell = worksheet.getCell(encodeCellAddress(col, row));\n cell.value = getCellValue(cellValue, cellType);\n cell.font = getCellFont(cellStyle, cellType);\n cell.fill = getCellFill(cellStyle);\n cell.border = getCellBorder(cellStyle);\n cell.alignment = getCellAlignment(cellStyle);\n } else if (cellType === 'chart') {\n const cellGroup = tableInstance.scenegraph.getCell(col, row);\n renderChart(cellGroup.firstChild as any); // render chart first\n const cellImageBase64 = exportCellImg(col, row, tableInstance);\n const imageId = workbook.addImage({\n base64: cellImageBase64,\n extension: 'png'\n });\n worksheet.addImage(imageId, {\n tl: { col: col + 1 / 80, row: row + 1 / 120 } as any, // ~1px\n br: { col: col + 1, row: row + 1 } as any,\n editAs: 'oneCell'\n // ext: { width: tableInstance.getColWidth(col), height: tableInstance.getRowHeight(row) }\n });\n tableInstance.scenegraph.updateNextFrame(); // rerender chart to avoid display error\n }\n}\n\nfunction getCellValue(cellValue: string, cellType: CellType) {\n if (cellType === 'link') {\n return {\n text: cellValue,\n hyperlink: cellValue,\n tooltip: cellValue\n };\n }\n return cellValue;\n}\n\nfunction exportCellImg(col: number, row: number, tableInstance: IVTable) {\n let cellGroup = tableInstance.scenegraph.getCell(col, row);\n let needRemove = false;\n if (cellGroup.role === 'empty') {\n cellGroup = updateCell(col, row, tableInstance as any, true);\n needRemove = true;\n }\n const oldStroke = cellGroup.attribute.stroke;\n cellGroup.attribute.stroke = false;\n const canvas = graphicUtil.drawGraphicToCanvas(cellGroup as any, tableInstance.scenegraph.stage) as HTMLCanvasElement;\n cellGroup.attribute.stroke = oldStroke;\n if (needRemove) {\n cellGroup.parent.removeChild(cellGroup);\n }\n return canvas.toDataURL();\n}\n"]}
|
package/cjs/excel/style.js
CHANGED
|
@@ -30,7 +30,7 @@ function getCellFill(cellStyle) {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
function getCellBorder(cellStyle) {
|
|
33
|
-
var _a, _b, _c, _d, _e;
|
|
33
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
34
34
|
const {borderColor: borderColor, borderLineWidth: borderLineWidth, borderLineDash: borderLineDash, _strokeArrayWidth: _strokeArrayWidth, _strokeArrayColor: _strokeArrayColor} = cellStyle;
|
|
35
35
|
if (_strokeArrayColor || _strokeArrayWidth) {
|
|
36
36
|
const border = {};
|
|
@@ -39,13 +39,13 @@ function getCellBorder(cellStyle) {
|
|
|
39
39
|
color: getColor(null !== (_b = null == _strokeArrayColor ? void 0 : _strokeArrayColor[0]) && void 0 !== _b ? _b : borderColor)
|
|
40
40
|
}), _strokeArrayColor && !_strokeArrayColor[1] || _strokeArrayWidth && !_strokeArrayWidth[1] || (border.right = {
|
|
41
41
|
style: getBorderStyle(null !== (_c = null == _strokeArrayWidth ? void 0 : _strokeArrayWidth[1]) && void 0 !== _c ? _c : borderLineWidth, borderLineDash),
|
|
42
|
-
color: getColor(null == _strokeArrayColor ? void 0 : _strokeArrayColor[1])
|
|
42
|
+
color: getColor(null !== (_d = null == _strokeArrayColor ? void 0 : _strokeArrayColor[1]) && void 0 !== _d ? _d : borderColor)
|
|
43
43
|
}), _strokeArrayColor && !_strokeArrayColor[2] || _strokeArrayWidth && !_strokeArrayWidth[2] || (border.bottom = {
|
|
44
|
-
style: getBorderStyle(null !== (
|
|
45
|
-
color: getColor(null == _strokeArrayColor ? void 0 : _strokeArrayColor[2])
|
|
44
|
+
style: getBorderStyle(null !== (_e = null == _strokeArrayWidth ? void 0 : _strokeArrayWidth[2]) && void 0 !== _e ? _e : borderLineWidth, borderLineDash),
|
|
45
|
+
color: getColor(null !== (_f = null == _strokeArrayColor ? void 0 : _strokeArrayColor[2]) && void 0 !== _f ? _f : borderColor)
|
|
46
46
|
}), _strokeArrayColor && !_strokeArrayColor[3] || _strokeArrayWidth && !_strokeArrayWidth[3] || (border.left = {
|
|
47
|
-
style: getBorderStyle(null !== (
|
|
48
|
-
color: getColor(null == _strokeArrayColor ? void 0 : _strokeArrayColor[3])
|
|
47
|
+
style: getBorderStyle(null !== (_g = null == _strokeArrayWidth ? void 0 : _strokeArrayWidth[3]) && void 0 !== _g ? _g : borderLineWidth, borderLineDash),
|
|
48
|
+
color: getColor(null !== (_h = null == _strokeArrayColor ? void 0 : _strokeArrayColor[3]) && void 0 !== _h ? _h : borderColor)
|
|
49
49
|
}), border;
|
|
50
50
|
}
|
|
51
51
|
if (0 === borderLineWidth) return {};
|
package/cjs/excel/style.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["excel/style.ts"],"names":[],"mappings":";;;AACA,yCAA4D;AAG5D,SAAgB,WAAW,CAAC,SAAoB,EAAE,QAAkB;IAClE,OAAO;QACL,IAAI,EAAE,0BAA0B,CAAC,SAAS,CAAC,UAAoB,CAAC,IAAI,OAAO;QAC3E,IAAI,EAAE,SAAS,CAAC,QAAQ,IAAI,EAAE;QAC9B,IAAI,EAAE,SAAS,CAAC,UAAU,KAAK,MAAM;QACrC,MAAM,EAAE,SAAS,CAAC,SAAS,KAAK,QAAQ;QACxC,KAAK,EAAE,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAE,SAAS,CAAC,UAAqB,CAAC,CAAC,CAAE,SAAS,CAAC,KAAgB,CAAC;QACrG,SAAS,EAAE,SAAS,CAAC,SAAS;KAC/B,CAAC;AACJ,CAAC;AATD,kCASC;AAED,SAAS,0BAA0B,CAAC,UAAkB;IACpD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAgB,WAAW,CAAC,SAAoB;IAC9C,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAiB,CAAC;KAC/C,CAAC;AACJ,CAAC;AAND,kCAMC;AAED,SAAgB,aAAa,CAAC,SAAoB;;IAChD,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IACzG,IAAI,iBAAiB,IAAI,iBAAiB,EAAE;QAC1C,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,IAAI,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACnG,MAAM,CAAC,GAAG,GAAG;gBACX,KAAK,EAAE,cAAc,CAAC,MAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,CAAC,CAAY,mCAAK,eAA0B,EAAE,cAAc,CAAC;gBACxG,KAAK,EAAE,QAAQ,CAAC,MAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,CAAC,CAAY,mCAAK,WAAsB,CAAC;aAC/E,CAAC;SACH;QACD,IAAI,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACnG,MAAM,CAAC,KAAK,GAAG;gBACb,KAAK,EAAE,cAAc,CAAC,MAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,CAAC,CAAY,mCAAK,eAA0B,EAAE,cAAc,CAAC;gBACxG,KAAK,EAAE,QAAQ,CAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,CAAC,
|
|
1
|
+
{"version":3,"sources":["excel/style.ts"],"names":[],"mappings":";;;AACA,yCAA4D;AAG5D,SAAgB,WAAW,CAAC,SAAoB,EAAE,QAAkB;IAClE,OAAO;QACL,IAAI,EAAE,0BAA0B,CAAC,SAAS,CAAC,UAAoB,CAAC,IAAI,OAAO;QAC3E,IAAI,EAAE,SAAS,CAAC,QAAQ,IAAI,EAAE;QAC9B,IAAI,EAAE,SAAS,CAAC,UAAU,KAAK,MAAM;QACrC,MAAM,EAAE,SAAS,CAAC,SAAS,KAAK,QAAQ;QACxC,KAAK,EAAE,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAE,SAAS,CAAC,UAAqB,CAAC,CAAC,CAAE,SAAS,CAAC,KAAgB,CAAC;QACrG,SAAS,EAAE,SAAS,CAAC,SAAS;KAC/B,CAAC;AACJ,CAAC;AATD,kCASC;AAED,SAAS,0BAA0B,CAAC,UAAkB;IACpD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAgB,WAAW,CAAC,SAAoB;IAC9C,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAiB,CAAC;KAC/C,CAAC;AACJ,CAAC;AAND,kCAMC;AAED,SAAgB,aAAa,CAAC,SAAoB;;IAChD,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IACzG,IAAI,iBAAiB,IAAI,iBAAiB,EAAE;QAC1C,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,IAAI,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACnG,MAAM,CAAC,GAAG,GAAG;gBACX,KAAK,EAAE,cAAc,CAAC,MAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,CAAC,CAAY,mCAAK,eAA0B,EAAE,cAAc,CAAC;gBACxG,KAAK,EAAE,QAAQ,CAAC,MAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,CAAC,CAAY,mCAAK,WAAsB,CAAC;aAC/E,CAAC;SACH;QACD,IAAI,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACnG,MAAM,CAAC,KAAK,GAAG;gBACb,KAAK,EAAE,cAAc,CAAC,MAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,CAAC,CAAY,mCAAK,eAA0B,EAAE,cAAc,CAAC;gBACxG,KAAK,EAAE,QAAQ,CAAC,MAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,CAAC,CAAY,mCAAK,WAAsB,CAAC;aAC/E,CAAC;SACH;QACD,IAAI,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACnG,MAAM,CAAC,MAAM,GAAG;gBACd,KAAK,EAAE,cAAc,CAAC,MAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,CAAC,CAAY,mCAAK,eAA0B,EAAE,cAAc,CAAC;gBACxG,KAAK,EAAE,QAAQ,CAAC,MAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,CAAC,CAAY,mCAAK,WAAsB,CAAC;aAC/E,CAAC;SACH;QACD,IAAI,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACnG,MAAM,CAAC,IAAI,GAAG;gBACZ,KAAK,EAAE,cAAc,CAAC,MAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,CAAC,CAAY,mCAAK,eAA0B,EAAE,cAAc,CAAC;gBACxG,KAAK,EAAE,QAAQ,CAAC,MAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,CAAC,CAAY,mCAAK,WAAsB,CAAC;aAC/E,CAAC;SACH;QACD,OAAO,MAAM,CAAC;KACf;IAED,IAAI,eAAe,KAAK,CAAC,EAAE;QACzB,OAAO,EAAE,CAAC;KACX;IACD,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,cAAc,CAAC,eAAyB,EAAE,cAAc,CAAC;QAChE,KAAK,EAAE,QAAQ,CAAC,WAAqB,CAAC;KACvC,CAAC;IACF,OAAO;QACL,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,MAAM;KACd,CAAC;AACJ,CAAC;AA5CD,sCA4CC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,cAA4B;IAKrE,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,EAAE;QAC3C,IAAI,SAAS,IAAI,CAAC,EAAE;YAClB,OAAO,QAAQ,CAAC;SACjB;QACD,OAAO,cAAc,CAAC;KACvB;IACD,IAAI,SAAS,IAAI,GAAG,EAAE;QACpB,OAAO,MAAM,CAAC;KACf;SAAM,IAAI,SAAS,IAAI,CAAC,EAAE;QACzB,OAAO,MAAM,CAAC;KACf;SAAM,IAAI,SAAS,IAAI,CAAC,EAAE;QACzB,OAAO,QAAQ,CAAC;KACjB;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,gBAAgB,CAAC,SAAoB;IACnD,OAAO;QACL,UAAU,EAAE,SAAS,CAAC,SAAS,IAAI,MAAM;QACzC,QAAQ,EAAE,SAAS,CAAC,YAAY,IAAI,QAAQ;QAC5C,QAAQ,EAAE,SAAS,CAAC,YAAY,IAAI,KAAK;KACnC,CAAC;AACX,CAAC;AAND,4CAMC;AAED,SAAS,QAAQ,CAAC,KAAa;IAE7B,OAAO;QACL,IAAI,EAAE,IAAA,iBAAS,EAAC,IAAA,wBAAgB,EAAC,KAAK,CAAC,CAAC;KACzC,CAAC;AACJ,CAAC","file":"style.js","sourcesContent":["import type ExcelJS from 'exceljs';\nimport { colorStringToRGB, rgbaToHex } from '../util/color';\nimport type { CellStyle, CellType, LineDashsDef } from '../util/type';\n\nexport function getCellFont(cellStyle: CellStyle, cellType: CellType): Partial<ExcelJS.Font> {\n return {\n name: getFirstFontFromFontFamily(cellStyle.fontFamily as string) || 'Arial', // only one font family name\n size: cellStyle.fontSize || 10,\n bold: cellStyle.fontWeight === 'bold', // only bold or not\n italic: cellStyle.fontStyle === 'italic', // only italic or not\n color: getColor(cellType === 'link' ? (cellStyle._linkColor as string) : (cellStyle.color as string)),\n underline: cellStyle.underline\n };\n}\n\nfunction getFirstFontFromFontFamily(fontFamily: string) {\n const fonts = fontFamily.split(',').map(font => font.trim());\n return fonts[0];\n}\n\nexport function getCellFill(cellStyle: CellStyle): ExcelJS.Fill {\n return {\n type: 'pattern',\n pattern: 'solid',\n fgColor: getColor(cellStyle.bgColor as string)\n };\n}\n\nexport function getCellBorder(cellStyle: CellStyle): Partial<ExcelJS.Borders> {\n const { borderColor, borderLineWidth, borderLineDash, _strokeArrayWidth, _strokeArrayColor } = cellStyle;\n if (_strokeArrayColor || _strokeArrayWidth) {\n const border: Partial<ExcelJS.Borders> = {};\n if (!((_strokeArrayColor && !_strokeArrayColor[0]) || (_strokeArrayWidth && !_strokeArrayWidth[0]))) {\n border.top = {\n style: getBorderStyle((_strokeArrayWidth?.[0] as number) ?? (borderLineWidth as number), borderLineDash),\n color: getColor((_strokeArrayColor?.[0] as string) ?? (borderColor as string))\n };\n }\n if (!((_strokeArrayColor && !_strokeArrayColor[1]) || (_strokeArrayWidth && !_strokeArrayWidth[1]))) {\n border.right = {\n style: getBorderStyle((_strokeArrayWidth?.[1] as number) ?? (borderLineWidth as number), borderLineDash),\n color: getColor((_strokeArrayColor?.[1] as string) ?? (borderColor as string))\n };\n }\n if (!((_strokeArrayColor && !_strokeArrayColor[2]) || (_strokeArrayWidth && !_strokeArrayWidth[2]))) {\n border.bottom = {\n style: getBorderStyle((_strokeArrayWidth?.[2] as number) ?? (borderLineWidth as number), borderLineDash),\n color: getColor((_strokeArrayColor?.[2] as string) ?? (borderColor as string))\n };\n }\n if (!((_strokeArrayColor && !_strokeArrayColor[3]) || (_strokeArrayWidth && !_strokeArrayWidth[3]))) {\n border.left = {\n style: getBorderStyle((_strokeArrayWidth?.[3] as number) ?? (borderLineWidth as number), borderLineDash),\n color: getColor((_strokeArrayColor?.[3] as string) ?? (borderColor as string))\n };\n }\n return border;\n }\n\n if (borderLineWidth === 0) {\n return {};\n }\n const border = {\n style: getBorderStyle(borderLineWidth as number, borderLineDash),\n color: getColor(borderColor as string)\n };\n return {\n top: border,\n left: border,\n bottom: border,\n right: border\n };\n}\n\nfunction getBorderStyle(lineWidth: number, borderLineDash: LineDashsDef): ExcelJS.BorderStyle {\n // hair:0.5\n // thin:1\n // medium:2.0\n // thick:3.0\n if (borderLineDash && borderLineDash.length) {\n if (lineWidth <= 2) {\n return 'dashed';\n }\n return 'mediumDashed';\n }\n if (lineWidth <= 0.5) {\n return 'hair';\n } else if (lineWidth <= 1) {\n return 'thin';\n } else if (lineWidth <= 2) {\n return 'medium';\n }\n return 'thick';\n}\n\nexport function getCellAlignment(cellStyle: CellStyle): Partial<ExcelJS.Alignment> {\n return {\n horizontal: cellStyle.textAlign || 'left',\n vertical: cellStyle.textBaseline || 'middle',\n wrapText: cellStyle.autoWrapText || false\n } as any;\n}\n\nfunction getColor(color: string) {\n // to do: support gradient color\n return {\n argb: rgbaToHex(colorStringToRGB(color))\n };\n}\n"]}
|
package/cjs/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export { downloadExcel }
|
|
1
|
+
import { exportVTableToCsv } from './csv';
|
|
2
|
+
import { downloadCsv, downloadExcel } from './util/download';
|
|
3
|
+
import { exportVTableToExcel } from './excel';
|
|
4
|
+
export { exportVTableToCsv, downloadCsv, exportVTableToExcel, downloadExcel };
|
package/cjs/index.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.downloadExcel = exports.exportVTableToExcel = exports.downloadCsv = exports.exportVTableToCsv = void 0;
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
const csv_1 = require("./csv");
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "exportVTableToCsv", {
|
|
10
10
|
enumerable: !0,
|
|
@@ -13,29 +13,25 @@ Object.defineProperty(exports, "exportVTableToCsv", {
|
|
|
13
13
|
}
|
|
14
14
|
});
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
const download_1 = require("./util/download");
|
|
17
17
|
|
|
18
18
|
Object.defineProperty(exports, "downloadCsv", {
|
|
19
19
|
enumerable: !0,
|
|
20
20
|
get: function() {
|
|
21
21
|
return download_1.downloadCsv;
|
|
22
22
|
}
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
var excel_1 = require("./excel");
|
|
26
|
-
|
|
27
|
-
Object.defineProperty(exports, "exportVTableToExcel", {
|
|
23
|
+
}), Object.defineProperty(exports, "downloadExcel", {
|
|
28
24
|
enumerable: !0,
|
|
29
25
|
get: function() {
|
|
30
|
-
return
|
|
26
|
+
return download_1.downloadExcel;
|
|
31
27
|
}
|
|
32
28
|
});
|
|
33
29
|
|
|
34
|
-
|
|
30
|
+
const excel_1 = require("./excel");
|
|
35
31
|
|
|
36
|
-
Object.defineProperty(exports, "
|
|
32
|
+
Object.defineProperty(exports, "exportVTableToExcel", {
|
|
37
33
|
enumerable: !0,
|
|
38
34
|
get: function() {
|
|
39
|
-
return
|
|
35
|
+
return excel_1.exportVTableToExcel;
|
|
40
36
|
}
|
|
41
37
|
});
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;AAAA,+BAA0C;AAIjC,kGAJA,uBAAiB,OAIA;AAH1B,8CAA6D;AAGjC,4FAHnB,sBAAW,OAGmB;AAAuB,8FAHxC,wBAAa,OAGwC;AAF3E,mCAA8C;AAEL,oGAFhC,2BAAmB,OAEgC","file":"index.js","sourcesContent":["import { exportVTableToCsv } from './csv';\nimport { downloadCsv, downloadExcel } from './util/download';\nimport { exportVTableToExcel } from './excel';\n\nexport { exportVTableToCsv, downloadCsv, exportVTableToExcel, downloadExcel };\n"]}
|