rapid-spreadjs 1.0.28 → 1.0.30
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/index.cjs.js +120 -73
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs.min.js +1 -1
- package/dist/index.cjs.min.js.map +1 -1
- package/dist/index.esm.js +120 -73
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/utils/sheet.d.ts +6 -0
- package/dist/utils/wookbook.d.ts +3 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -3,6 +3,77 @@ import * as echarts from 'echarts';
|
|
|
3
3
|
import * as math from 'mathjs';
|
|
4
4
|
import { saveAs } from 'file-saver';
|
|
5
5
|
|
|
6
|
+
/******************************************************************************
|
|
7
|
+
Copyright (c) Microsoft Corporation.
|
|
8
|
+
|
|
9
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
10
|
+
purpose with or without fee is hereby granted.
|
|
11
|
+
|
|
12
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
13
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
14
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
15
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
16
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
17
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
18
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
19
|
+
***************************************************************************** */
|
|
20
|
+
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
24
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
25
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
26
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
27
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
28
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
29
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
34
|
+
var e = new Error(message);
|
|
35
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* 公用工具函数属性
|
|
40
|
+
*/
|
|
41
|
+
const CommonUtils = {
|
|
42
|
+
/**
|
|
43
|
+
* 获取文件的字节流对象
|
|
44
|
+
* @param fileUrl 在线文件地址
|
|
45
|
+
* @returns 文件的字节流对象
|
|
46
|
+
*/
|
|
47
|
+
getFileBlob: (fileUrl) => __awaiter(void 0, void 0, void 0, function* () {
|
|
48
|
+
// 获取文件响应结果
|
|
49
|
+
const response = yield fetch(fileUrl, { method: 'GET' });
|
|
50
|
+
// 获取成功
|
|
51
|
+
if (response.ok) {
|
|
52
|
+
// 文件的字节流对象
|
|
53
|
+
const blob = yield response.blob();
|
|
54
|
+
return blob;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}),
|
|
60
|
+
/**
|
|
61
|
+
* 获取列的英文字母
|
|
62
|
+
* @param colIndex 列的索引
|
|
63
|
+
* @returns 返回英文字母
|
|
64
|
+
*/
|
|
65
|
+
getColLetterName: (colIndex) => {
|
|
66
|
+
colIndex += 1;
|
|
67
|
+
let letter = '';
|
|
68
|
+
while (colIndex > 0) {
|
|
69
|
+
const remainder = (colIndex - 1) % 26;
|
|
70
|
+
letter = String.fromCharCode(remainder + 65) + letter;
|
|
71
|
+
colIndex = Math.floor((colIndex - 1) / 26);
|
|
72
|
+
}
|
|
73
|
+
return letter.toUpperCase();
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
|
|
6
77
|
// 导入rapid-utils中的函数(注意:需要在tsconfig.json文件中设置moduleResolution为node,否则会提示:找不到模块“rapid-utils”。你的意思是要将 "moduleResolution" 选项设置为 "nodenext",还是要将别名添加到 "paths" 选项中?ts(2792))
|
|
7
78
|
/**
|
|
8
79
|
* SpreadJS工作表工具函数属性
|
|
@@ -483,6 +554,24 @@ const SheetUtils = {
|
|
|
483
554
|
sheet.setStyle(item.row, item.col, cellStyle);
|
|
484
555
|
});
|
|
485
556
|
},
|
|
557
|
+
/**
|
|
558
|
+
* 根据单元格范围获取范围字符串
|
|
559
|
+
* @param cellRange 单元格范围
|
|
560
|
+
* @returns 返回范围字符串,如:A1:B2
|
|
561
|
+
*/
|
|
562
|
+
getRangeStr: (cellRange) => {
|
|
563
|
+
// 计算起始位置
|
|
564
|
+
const startCol = CommonUtils.getColLetterName(cellRange.col);
|
|
565
|
+
// 行索引转Excel行号(从1开始)
|
|
566
|
+
const startRow = cellRange.row + 1;
|
|
567
|
+
// 计算结束位置
|
|
568
|
+
const endCol = CommonUtils.getColLetterName(cellRange.col + cellRange.colCount - 1);
|
|
569
|
+
// 结束行号 = 起始行 + 行数
|
|
570
|
+
const endRow = cellRange.row + cellRange.rowCount;
|
|
571
|
+
return `${startCol}${startRow}:${endCol}${endRow}`;
|
|
572
|
+
// // 或者使用SpreadJS提供的方法rangeToFormula
|
|
573
|
+
// return GC.Spread.Sheets.CalcEngine.rangeToFormula(cellRange);
|
|
574
|
+
},
|
|
486
575
|
};
|
|
487
576
|
|
|
488
577
|
/**
|
|
@@ -606,77 +695,6 @@ const BusinessUtils = {
|
|
|
606
695
|
},
|
|
607
696
|
};
|
|
608
697
|
|
|
609
|
-
/******************************************************************************
|
|
610
|
-
Copyright (c) Microsoft Corporation.
|
|
611
|
-
|
|
612
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
613
|
-
purpose with or without fee is hereby granted.
|
|
614
|
-
|
|
615
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
616
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
617
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
618
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
619
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
620
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
621
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
622
|
-
***************************************************************************** */
|
|
623
|
-
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
627
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
628
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
629
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
630
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
631
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
632
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
633
|
-
});
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
637
|
-
var e = new Error(message);
|
|
638
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
639
|
-
};
|
|
640
|
-
|
|
641
|
-
/**
|
|
642
|
-
* 公用工具函数属性
|
|
643
|
-
*/
|
|
644
|
-
const CommonUtils = {
|
|
645
|
-
/**
|
|
646
|
-
* 获取文件的字节流对象
|
|
647
|
-
* @param fileUrl 在线文件地址
|
|
648
|
-
* @returns 文件的字节流对象
|
|
649
|
-
*/
|
|
650
|
-
getFileBlob: (fileUrl) => __awaiter(void 0, void 0, void 0, function* () {
|
|
651
|
-
// 获取文件响应结果
|
|
652
|
-
const response = yield fetch(fileUrl, { method: 'GET' });
|
|
653
|
-
// 获取成功
|
|
654
|
-
if (response.ok) {
|
|
655
|
-
// 文件的字节流对象
|
|
656
|
-
const blob = yield response.blob();
|
|
657
|
-
return blob;
|
|
658
|
-
}
|
|
659
|
-
else {
|
|
660
|
-
return null;
|
|
661
|
-
}
|
|
662
|
-
}),
|
|
663
|
-
/**
|
|
664
|
-
* 获取列的英文字母
|
|
665
|
-
* @param colIndex 列的索引
|
|
666
|
-
* @returns 返回英文字母
|
|
667
|
-
*/
|
|
668
|
-
getColLetterName: (colIndex) => {
|
|
669
|
-
colIndex += 1;
|
|
670
|
-
let letter = '';
|
|
671
|
-
while (colIndex > 0) {
|
|
672
|
-
const remainder = (colIndex - 1) % 26;
|
|
673
|
-
letter = String.fromCharCode(remainder + 65) + letter;
|
|
674
|
-
colIndex = Math.floor((colIndex - 1) / 26);
|
|
675
|
-
}
|
|
676
|
-
return letter.toUpperCase();
|
|
677
|
-
},
|
|
678
|
-
};
|
|
679
|
-
|
|
680
698
|
/**
|
|
681
699
|
* 公用方法,如:修约计算等
|
|
682
700
|
*/
|
|
@@ -8074,13 +8092,22 @@ const WorkbookUtils = {
|
|
|
8074
8092
|
* 合并多个工作簿并导出Excel(同时返回合并后的工作簿实例)
|
|
8075
8093
|
* @param GC Spread的GC对象
|
|
8076
8094
|
* @param spreads 工作簿实例集合
|
|
8095
|
+
* @param isExcel 是否导出为Excel文件,默认为true(如果为false,则导出为PDF)
|
|
8077
8096
|
* @param exportName 导出的文件名称,不传则为第一个Sheet的名称
|
|
8097
|
+
* @param regFonts 注册的字体集合,默认注册宋体和Arial字体
|
|
8078
8098
|
* @returns 合并后的工作簿实例
|
|
8079
8099
|
*/
|
|
8080
|
-
|
|
8100
|
+
mergeWorkbooksToExcelOrPdf: (GC_1, spreads_1, ...args_1) => __awaiter(void 0, [GC_1, spreads_1, ...args_1], void 0, function* (GC, spreads, isExcel = true, exportName, regFonts = [
|
|
8101
|
+
{ name: '宋体', type: 'normal', url: '/spreadJsFonts/simsun.ttf' },
|
|
8102
|
+
{ name: 'Arial', type: 'normal', url: '/spreadJsFonts/arial.ttf' },
|
|
8103
|
+
]) {
|
|
8081
8104
|
if (!spreads || spreads.length == 0) {
|
|
8082
8105
|
return;
|
|
8083
8106
|
}
|
|
8107
|
+
// 导出PDF的时候,注册字体(必须在初始化Workbook前注册)
|
|
8108
|
+
if (!isExcel) {
|
|
8109
|
+
yield WorkbookUtils.registerFont(GC, regFonts);
|
|
8110
|
+
}
|
|
8084
8111
|
// 主工作簿
|
|
8085
8112
|
const mainWorkbook = new GC.Spread.Sheets.Workbook();
|
|
8086
8113
|
// 暂停绘制
|
|
@@ -8150,10 +8177,30 @@ const WorkbookUtils = {
|
|
|
8150
8177
|
mainWorkbook.options.showVerticalScrollbar = true;
|
|
8151
8178
|
// 滚动条是否与活动工作表的最后一行和最后一列对齐(避免滚动的时候出现灰色区域)
|
|
8152
8179
|
mainWorkbook.options.scrollbarMaxAlign = false;
|
|
8180
|
+
// 导出PDF时
|
|
8181
|
+
if (!isExcel) {
|
|
8182
|
+
// 获取最后一个要打印的PDF工作表
|
|
8183
|
+
const pdfSheet = mainWorkbook.getSheet(mainWorkbook.getSheetCount() - 1);
|
|
8184
|
+
let printInfo = pdfSheet.printInfo();
|
|
8185
|
+
printInfo.margin({ top: 0, bottom: 0, left: 0, right: 0, header: 0, footer: 0 });
|
|
8186
|
+
printInfo.showBorder(false);
|
|
8187
|
+
printInfo.showGridLine(false);
|
|
8188
|
+
printInfo.blackAndWhite(false);
|
|
8189
|
+
printInfo.showRowHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);
|
|
8190
|
+
printInfo.showColumnHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);
|
|
8191
|
+
printInfo.zoomFactor(1.06); //1.06
|
|
8192
|
+
}
|
|
8153
8193
|
// 恢复绘制
|
|
8154
8194
|
mainWorkbook.resumePaint();
|
|
8155
8195
|
// 导出Excel文件
|
|
8156
|
-
|
|
8196
|
+
if (isExcel) {
|
|
8197
|
+
WorkbookUtils.exportToExcel(GC, mainWorkbook, exportName);
|
|
8198
|
+
}
|
|
8199
|
+
else {
|
|
8200
|
+
mainWorkbook.savePDF(function (blob) {
|
|
8201
|
+
saveAs(blob, `${exportName && exportName.length > 0 ? exportName : '文件'}.pdf`);
|
|
8202
|
+
}, console.log);
|
|
8203
|
+
}
|
|
8157
8204
|
return mainWorkbook;
|
|
8158
8205
|
}),
|
|
8159
8206
|
/**
|