rapid-spreadjs 1.0.39 → 1.0.41
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 +171 -4
- 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 +171 -4
- 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 +2 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -573,6 +573,58 @@ const SheetUtils = {
|
|
|
573
573
|
// // 或者使用SpreadJS提供的方法rangeToFormula
|
|
574
574
|
// return GC.Spread.Sheets.CalcEngine.rangeToFormula(cellRange);
|
|
575
575
|
},
|
|
576
|
+
/**
|
|
577
|
+
* 获取工作表中所有纯值或公式单元格的范围选择字符串
|
|
578
|
+
* @param sheet 工作表对象
|
|
579
|
+
* @param isFormulaCells 是否获取公式单元格,默认为:false
|
|
580
|
+
*/
|
|
581
|
+
getCellsRangeStr: (sheet, isFormulaCells = false) => {
|
|
582
|
+
const range = { row: 0, col: 1, rowCount: sheet.getRowCount(), colCount: 77 };
|
|
583
|
+
// 所有单元格对象集合
|
|
584
|
+
const allCells = SheetUtils.getAllCellObjsByRanges(sheet, [range]);
|
|
585
|
+
// 最终需要的单元格对象集合
|
|
586
|
+
let retCells = [];
|
|
587
|
+
// 遍历所有单元格
|
|
588
|
+
allCells.forEach((cell) => {
|
|
589
|
+
const value = sheet.getValue(cell.row, cell.col);
|
|
590
|
+
const formula = sheet.getFormula(cell.row, cell.col);
|
|
591
|
+
// 非公式+有值(非空) || 公式
|
|
592
|
+
if ((!isFormulaCells && !formula && value !== null && value !== undefined && value !== '') || (isFormulaCells && formula)) {
|
|
593
|
+
retCells.push(cell);
|
|
594
|
+
}
|
|
595
|
+
});
|
|
596
|
+
// 辅助函数:将列索引转为大写字母(如 0->A, 1->B, 26->AA)
|
|
597
|
+
const indexToAlpha = (index) => {
|
|
598
|
+
let alpha = '';
|
|
599
|
+
while (index >= 0) {
|
|
600
|
+
alpha = String.fromCharCode(65 + (index % 26)) + alpha;
|
|
601
|
+
index = Math.floor(index / 26) - 1;
|
|
602
|
+
if (index < 0)
|
|
603
|
+
break;
|
|
604
|
+
}
|
|
605
|
+
return alpha;
|
|
606
|
+
};
|
|
607
|
+
// Sheet名称
|
|
608
|
+
const sheetName = sheet.name();
|
|
609
|
+
// 处理每个单元格/区域
|
|
610
|
+
const cellStrings = retCells.map((cell) => {
|
|
611
|
+
// 起始列字母
|
|
612
|
+
const colAlpha = indexToAlpha(cell.col);
|
|
613
|
+
// 起始行号(从1计数)
|
|
614
|
+
const startRow = cell.row + 1;
|
|
615
|
+
// 合并单元格只返回左上角单元格
|
|
616
|
+
const isMerged = cell.rowCount > 1 || cell.colCount > 1;
|
|
617
|
+
// 处理区域范围(合并单元格只返回左上角)
|
|
618
|
+
if (isMerged) {
|
|
619
|
+
return `${sheetName}!${colAlpha}${startRow}`;
|
|
620
|
+
}
|
|
621
|
+
// 处理单单元格
|
|
622
|
+
else {
|
|
623
|
+
return `${sheetName}!${colAlpha}${startRow}`;
|
|
624
|
+
}
|
|
625
|
+
});
|
|
626
|
+
return '=' + cellStrings.join(',');
|
|
627
|
+
},
|
|
576
628
|
};
|
|
577
629
|
|
|
578
630
|
/**
|
|
@@ -605,6 +657,15 @@ const BusinessUtils = {
|
|
|
605
657
|
sheet.suspendPaint();
|
|
606
658
|
// 设置工作表行数为0
|
|
607
659
|
sheet.setRowCount(0);
|
|
660
|
+
/**
|
|
661
|
+
* 设置单元格字体和大小
|
|
662
|
+
* @param row
|
|
663
|
+
* @param col
|
|
664
|
+
*/
|
|
665
|
+
const setFontSizeFamily = (row, col) => {
|
|
666
|
+
sheet.getCell(row, col).fontFamily('宋体');
|
|
667
|
+
sheet.getCell(row, col).fontSize('9pt');
|
|
668
|
+
};
|
|
608
669
|
for (let i = 0; i < testObjectAttrsChunk.length; i++) {
|
|
609
670
|
const rowAttrArr = testObjectAttrsChunk[i];
|
|
610
671
|
// 获取总行数
|
|
@@ -631,6 +692,8 @@ const BusinessUtils = {
|
|
|
631
692
|
sheet.addSpan(totalRowCount, contentColStartIndex + titleCellColumnCount, 1, rowAttrArr.length > 1 ? titleCellValColumnCount : contentTotalColCount - titleCellColumnCount, gc.Spread.Sheets.SheetArea.viewport);
|
|
632
693
|
sheet.setValue(totalRowCount, contentColStartIndex, rowAttrArr[0].title);
|
|
633
694
|
sheet.setValue(totalRowCount, contentColStartIndex + titleCellColumnCount, rowAttrArr[0].value);
|
|
695
|
+
setFontSizeFamily(totalRowCount, contentColStartIndex);
|
|
696
|
+
setFontSizeFamily(totalRowCount, contentColStartIndex + titleCellColumnCount);
|
|
634
697
|
// 合并第二个属性的标题列和值列,同时设置对应单元格的内容
|
|
635
698
|
if (rowAttrArr.length > 1) {
|
|
636
699
|
const colIndexTitle = contentColStartIndex + titleCellColumnCount + titleCellValColumnCount;
|
|
@@ -639,6 +702,8 @@ const BusinessUtils = {
|
|
|
639
702
|
sheet.addSpan(totalRowCount, colIndexValue, 1, titleCellValColumnCount + 1 + (!isVertical && rowAttrArr.length == 2 ? titleCellColumnCount + titleCellValColumnCount + 1 : 0), gc.Spread.Sheets.SheetArea.viewport);
|
|
640
703
|
sheet.setValue(totalRowCount, colIndexTitle, rowAttrArr[1].title);
|
|
641
704
|
sheet.setValue(totalRowCount, colIndexValue, rowAttrArr[1].value);
|
|
705
|
+
setFontSizeFamily(totalRowCount, colIndexTitle);
|
|
706
|
+
setFontSizeFamily(totalRowCount, colIndexValue);
|
|
642
707
|
}
|
|
643
708
|
// 合并第三个属性的标题列和值列,同时设置对应单元格的内容
|
|
644
709
|
if (rowAttrArr.length > 2) {
|
|
@@ -648,6 +713,8 @@ const BusinessUtils = {
|
|
|
648
713
|
sheet.addSpan(totalRowCount, colIndexValue, 1, titleCellValColumnCount + 1, gc.Spread.Sheets.SheetArea.viewport);
|
|
649
714
|
sheet.setValue(totalRowCount, colIndexTitle, rowAttrArr[2].title);
|
|
650
715
|
sheet.setValue(totalRowCount, colIndexValue, rowAttrArr[2].value);
|
|
716
|
+
setFontSizeFamily(totalRowCount, colIndexTitle);
|
|
717
|
+
setFontSizeFamily(totalRowCount, colIndexValue);
|
|
651
718
|
}
|
|
652
719
|
}
|
|
653
720
|
// 恢复绘制
|
|
@@ -18621,6 +18688,105 @@ const FormulaUtils = {
|
|
|
18621
18688
|
return czl;
|
|
18622
18689
|
},
|
|
18623
18690
|
},
|
|
18691
|
+
{
|
|
18692
|
+
funName: 'YJLHL',
|
|
18693
|
+
funDesc: '沥青蜡含量',
|
|
18694
|
+
funDefaultVal: null,
|
|
18695
|
+
// isContainNullUndefinedVal: true,
|
|
18696
|
+
funParams: [
|
|
18697
|
+
{
|
|
18698
|
+
name: '析出蜡质量1',
|
|
18699
|
+
repeatable: false,
|
|
18700
|
+
optional: false,
|
|
18701
|
+
},
|
|
18702
|
+
{
|
|
18703
|
+
name: '析出蜡质量2',
|
|
18704
|
+
repeatable: false,
|
|
18705
|
+
optional: false,
|
|
18706
|
+
},
|
|
18707
|
+
{
|
|
18708
|
+
name: '析出蜡质量3',
|
|
18709
|
+
repeatable: false,
|
|
18710
|
+
optional: false,
|
|
18711
|
+
},
|
|
18712
|
+
{
|
|
18713
|
+
name: '蜡含量1',
|
|
18714
|
+
repeatable: false,
|
|
18715
|
+
optional: false,
|
|
18716
|
+
},
|
|
18717
|
+
{
|
|
18718
|
+
name: '蜡含量2',
|
|
18719
|
+
repeatable: false,
|
|
18720
|
+
optional: false,
|
|
18721
|
+
},
|
|
18722
|
+
{
|
|
18723
|
+
name: '蜡含量3',
|
|
18724
|
+
repeatable: false,
|
|
18725
|
+
optional: false,
|
|
18726
|
+
},
|
|
18727
|
+
],
|
|
18728
|
+
funCallback: (spread, sheet, retData) => {
|
|
18729
|
+
//如果传递的参数小于6个,则返回空字符串
|
|
18730
|
+
if (retData.allCellVals.length < 6) {
|
|
18731
|
+
return '';
|
|
18732
|
+
}
|
|
18733
|
+
var xArr = [retData.allCellVals[0], retData.allCellVals[1], retData.allCellVals[2]]; //析出蜡质量数组
|
|
18734
|
+
var rArr = [retData.allCellVals[3], retData.allCellVals[4], retData.allCellVals[5]]; //蜡含量数组
|
|
18735
|
+
var jg;
|
|
18736
|
+
var MIN = 0.065;
|
|
18737
|
+
var MAX = 0.085;
|
|
18738
|
+
var ok = xArr.map((v) => +v >= MIN && +v <= MAX); //判定是否符合条件
|
|
18739
|
+
var idx = ok.map((v, i) => (v ? i : -1)).filter((i) => i >= 0); //符合条件个数
|
|
18740
|
+
if (idx.length === 0) {
|
|
18741
|
+
// msg = '三个值均不满足条件,请重新进行试验!';
|
|
18742
|
+
return '重新试验';
|
|
18743
|
+
}
|
|
18744
|
+
var vals = idx.map((i) => +rArr[i]); //符合条件的蜡质量对应的蜡含量
|
|
18745
|
+
var avg = vals.reduce((a, b) => a + b) / vals.length; //计算蜡含量平均值
|
|
18746
|
+
jg = FormulaUtils.commFun.GetDataOddIncreaseEvenDecrease(avg, -1);
|
|
18747
|
+
return jg;
|
|
18748
|
+
},
|
|
18749
|
+
},
|
|
18750
|
+
{
|
|
18751
|
+
funName: 'YJNFX',
|
|
18752
|
+
funDesc: '沥青黏附性',
|
|
18753
|
+
funDefaultVal: null,
|
|
18754
|
+
// isContainNullUndefinedVal: true,
|
|
18755
|
+
funParams: [
|
|
18756
|
+
{
|
|
18757
|
+
name: '沥青膜剥落情况',
|
|
18758
|
+
repeatable: false,
|
|
18759
|
+
optional: false,
|
|
18760
|
+
},
|
|
18761
|
+
],
|
|
18762
|
+
funCallback: (spread, sheet, retData) => {
|
|
18763
|
+
//如果传递的参数小于1个,则返回空字符串
|
|
18764
|
+
if (retData.allCellVals.length < 1) {
|
|
18765
|
+
return '';
|
|
18766
|
+
}
|
|
18767
|
+
let lqmblqk = retData.allCellVals[0];
|
|
18768
|
+
var pddj; //最后输出的值
|
|
18769
|
+
if (lqmblqk == '沥青膜裹覆率接近100%') {
|
|
18770
|
+
pddj = '5';
|
|
18771
|
+
}
|
|
18772
|
+
else if (lqmblqk == '沥青膜少部剥落,厚度不均,沥青膜裹覆率不小于90%') {
|
|
18773
|
+
pddj = '4';
|
|
18774
|
+
}
|
|
18775
|
+
else if (lqmblqk == '沥青膜局部明显剥落,沥青膜裹覆率为75%~90%') {
|
|
18776
|
+
pddj = '3';
|
|
18777
|
+
}
|
|
18778
|
+
else if (lqmblqk == '沥青膜大部分剥落,沥青膜裹覆率为25%~75%') {
|
|
18779
|
+
pddj = '2';
|
|
18780
|
+
}
|
|
18781
|
+
else if (lqmblqk == '沥青膜几乎完全剥落,沥青膜裹覆率小于25%') {
|
|
18782
|
+
pddj = '1';
|
|
18783
|
+
}
|
|
18784
|
+
else {
|
|
18785
|
+
pddj = '/';
|
|
18786
|
+
}
|
|
18787
|
+
return pddj;
|
|
18788
|
+
},
|
|
18789
|
+
},
|
|
18624
18790
|
],
|
|
18625
18791
|
};
|
|
18626
18792
|
|
|
@@ -18705,8 +18871,8 @@ const WorkbookUtils = {
|
|
|
18705
18871
|
// 设置打印区域,这里是固定的,在业务应用中需要根据实际情况修改打印区域
|
|
18706
18872
|
printInfo.rowStart(0);
|
|
18707
18873
|
printInfo.rowEnd(sheet.getRowCount()); //printInfo.rowEnd(41);
|
|
18708
|
-
printInfo.columnStart(
|
|
18709
|
-
printInfo.columnEnd(
|
|
18874
|
+
printInfo.columnStart(1);
|
|
18875
|
+
printInfo.columnEnd(77);
|
|
18710
18876
|
// 设置SpreadJS自身的边距为合适的距离
|
|
18711
18877
|
printInfo.margin({
|
|
18712
18878
|
/**
|
|
@@ -18817,12 +18983,13 @@ const WorkbookUtils = {
|
|
|
18817
18983
|
* @param exportName 导出的文件名称,不传则为第一个Sheet的名称
|
|
18818
18984
|
* @param regFonts 注册的字体集合,默认注册宋体和Arial字体
|
|
18819
18985
|
* @param contentColEndIndex 内容列结束的索引,默认为:77(用于导出PDF文件的时候,只导出内容列到索引contentColEndIndex的位置,超过contentColEndIndex索引列后续的内容其实不需要导出)
|
|
18986
|
+
* @param isHb 是否是横表,默认为false(横表的时候,设置导出PDF的缩放比例为1,否则为1.06)
|
|
18820
18987
|
* @returns 合并后的工作簿实例
|
|
18821
18988
|
*/
|
|
18822
18989
|
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 = [
|
|
18823
18990
|
{ name: '宋体', type: 'normal', url: '/spreadJsFonts/simsun.ttf' },
|
|
18824
18991
|
{ name: 'Arial', type: 'normal', url: '/spreadJsFonts/arial.ttf' },
|
|
18825
|
-
], contentColEndIndex = 77) {
|
|
18992
|
+
], contentColEndIndex = 77, isHb = false) {
|
|
18826
18993
|
if (!spreads || spreads.length == 0) {
|
|
18827
18994
|
return;
|
|
18828
18995
|
}
|
|
@@ -18911,7 +19078,7 @@ const WorkbookUtils = {
|
|
|
18911
19078
|
printInfo.blackAndWhite(false);
|
|
18912
19079
|
printInfo.showRowHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);
|
|
18913
19080
|
printInfo.showColumnHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);
|
|
18914
|
-
printInfo.zoomFactor(1.06);
|
|
19081
|
+
printInfo.zoomFactor(isHb ? 1 : 1.06);
|
|
18915
19082
|
}
|
|
18916
19083
|
// 恢复绘制
|
|
18917
19084
|
mainWorkbook.resumePaint();
|