rapid-spreadjs 1.0.19 → 1.0.21

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.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as echarts from 'echarts';
2
2
  import * as math from 'mathjs';
3
- import { orderByJson } from 'rapid-utils';
3
+ import { groupByJson, forEachJson, orderByJson } from 'rapid-utils';
4
4
  import { saveAs } from 'file-saver';
5
5
 
6
6
  /**
@@ -7289,7 +7289,18 @@ const SheetUtils = {
7289
7289
  sheet.setSelection(cellObj.row, cellObj.col, cellObj.rowCount, cellObj.colCount);
7290
7290
  },
7291
7291
  /**
7292
- * 获取某工作表中某范围集合中所有的单元格坐标对象集合
7292
+ * 获取某工作表中某个范围中所有的单元格坐标对象集合
7293
+ * 该方法适用的场景如:手动选择了某个单元格范围,在这个范围中可能包含独立的单元格,也可能包含合并的单元格,这时候就需要用到如下方法获取到所有单元格对象
7294
+ * @param sheet 工作表实例
7295
+ * @param selectRange 单元格范围,格式如:{ row: 0, col: 0, rowCount: 2, colCount: 2 }
7296
+ * @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)
7297
+ * @returns 返回数组集合,格式如:[{ row: 0, col: 0, rowCount: 1, colCount: 1 }]
7298
+ */
7299
+ getAllCellObjsByRange: (sheet, selectRange, isMulColOrder = false) => {
7300
+ return SheetUtils.getAllCellObjsByRanges(sheet, [selectRange], isMulColOrder);
7301
+ },
7302
+ /**
7303
+ * 获取某工作表中多个范围集合中所有的单元格坐标对象集合
7293
7304
  * 该方法适用的场景如:手动选择了很多个单元格范围,在这些范围中可能包含独立的单元格,也可能包含合并的单元格,这时候就需要用到如下方法获取到所有单元格对象
7294
7305
  * @param sheet 工作表实例
7295
7306
  * @param selectRanges 单元格范围集合,格式如:[{ row: 0, col: 0, rowCount: 2, colCount: 2 }]
@@ -7376,6 +7387,29 @@ const SheetUtils = {
7376
7387
  const sheet = spread.getActiveSheet();
7377
7388
  return SheetUtils.getSheetSelectCellObjs(sheet, isMulColOrder);
7378
7389
  },
7390
+ /**
7391
+ * 获取某工作表指定范围单元格的坐标对象集合(二维数组,格式如:[[{row:0……}],[{row:0……}]])
7392
+ * @param sheet 工作表实例
7393
+ * @param cellRange 单元格范围
7394
+ * @param groupType 分组字段属性(row或col),默认为:row
7395
+ * @returns 返回某工作表指定范围单元格的坐标对象集合(二维数组,格式如:[[{row:0……}],[{row:0……}]])
7396
+ */
7397
+ getSheetCellObjsByGroup: (sheet, cellRange, groupType = 'row') => {
7398
+ // 暂停绘制
7399
+ sheet.suspendPaint();
7400
+ const valCells = SheetUtils.getAllCellObjsByRange(sheet, cellRange);
7401
+ // 按照JSON数组中某个字段进行分组(groupType为row或col)
7402
+ const groupByCells = groupByJson(valCells, groupType);
7403
+ // 最终返回结果(二维数组)
7404
+ const retCells = [];
7405
+ // 遍历分组JSON对象(groupByCells的格式为:{key1: [cell1, cell2, ...], key2: [cell1, cell2, ...], ...})
7406
+ forEachJson(groupByCells, (curGroupCells, key, source) => {
7407
+ retCells.push(curGroupCells);
7408
+ });
7409
+ // 恢复绘制
7410
+ sheet.resumePaint();
7411
+ return retCells;
7412
+ },
7379
7413
  /**
7380
7414
  * 获取某工作表选中单元格的值集合
7381
7415
  * @param sheet 工作表实例
@@ -7410,6 +7444,41 @@ const SheetUtils = {
7410
7444
  const sheet = spread.getActiveSheet();
7411
7445
  return SheetUtils.getSheetSelectVals(sheet, isMulColOrder, nullUndefinedReplaceVal);
7412
7446
  },
7447
+ /**
7448
+ * 获取某工作表指定范围单元格的值集合(二维数组,格式如:[[1,2,3],[4,5,6]])
7449
+ * @param sheet 工作表实例
7450
+ * @param cellRange 单元格范围
7451
+ * @param groupType 分组字段属性(row或col),默认为:row
7452
+ * @param nullUndefinedReplaceVal 如果单元格的值为null或undefined,则将其替换为该值(如果不传入该参数,则不替换)
7453
+ * @returns 返回某工作表指定范围单元格的值集合(二维数组,格式如:[[1,2,3],[4,5,6]])
7454
+ */
7455
+ getSheetRangeValsByGroup: (sheet, cellRange, groupType = 'row', nullUndefinedReplaceVal) => {
7456
+ // 暂停绘制
7457
+ sheet.suspendPaint();
7458
+ const valCells = SheetUtils.getAllCellObjsByRange(sheet, cellRange);
7459
+ // 按照JSON数组中某个字段进行分组(groupType为row或col)
7460
+ const groupByCells = groupByJson(valCells, groupType);
7461
+ // 最终返回结果(二维数组)
7462
+ const retVals = [];
7463
+ // 遍历分组JSON对象(groupByCells的格式为:{key1: [cell1, cell2, ...], key2: [cell1, cell2, ...], ...})
7464
+ forEachJson(groupByCells, (curGroupCells, key, source) => {
7465
+ // 当前按照row或col分组的单元格的值集合
7466
+ const curVals = [];
7467
+ // 遍历当前分组的所有单元格
7468
+ forEachJson(curGroupCells, (item, index, source) => {
7469
+ let cellVal = sheet.getValue(item.row, item.col);
7470
+ // 如果cellVal为null或undefined,并且nullUndefinedReplaceVal不为null或undefined,则将cellVal替换为nullUndefinedReplaceVal
7471
+ if (nullUndefinedReplaceVal != null && nullUndefinedReplaceVal != undefined && (cellVal === null || cellVal === undefined)) {
7472
+ cellVal = nullUndefinedReplaceVal;
7473
+ }
7474
+ curVals.push(cellVal);
7475
+ });
7476
+ retVals.push(curVals);
7477
+ });
7478
+ // 恢复绘制
7479
+ sheet.resumePaint();
7480
+ return retVals;
7481
+ },
7413
7482
  /**
7414
7483
  * 获取单元格类型名称
7415
7484
  * @param GC GC对象