找回密码
 立即注册

QQ登录

只需一步,快速开始

anyOneCode

注册会员

3

主题

26

帖子

71

积分

注册会员

积分
71
最新发帖
anyOneCode
注册会员   /  发表于:2023-9-13 15:11  /   查看:1474  /  回复:6
本帖最后由 Richard.Huang 于 2023-10-19 12:05 编辑

产品:SpreadJS

代码如下所示
  1. let tableColumns = [];
  2.         // 获取table原有column
  3.         for (let c = 0; c < cc; c++) {
  4.           let dataField = table.getColumnDataField(c);
  5.           let name = table.getColumnName(c);
  6.           let tableColumn = new GC.Spread.Sheets.Tables.TableColumn();
  7.           tableColumn.name(name);
  8.           tableColumn.dataField(dataField);
  9.           tableColumns.push(tableColumn);
  10.         }
  11.         historyColumns.forEach((element) => {
  12.           // 添加新的column
  13.           let newTableColumn = new GC.Spread.Sheets.Tables.TableColumn();
  14.           newTableColumn.name(element.name);
  15.           newTableColumn.dataField(element.value);
  16.           tableColumns.unshift(newTableColumn);
  17.           console.log(tableColumns);
  18.           activeSheet.setColumnWidth(
  19.             0,
  20.             width,
  21.             GC.Spread.Sheets.SheetArea.viewport
  22.           );
  23.           // table新增一列
  24.           table.insertColumns(cc - 1, 1, true);
  25.         });

  26.         table.bindColumns(tableColumns);
复制代码
原来有10行,后面手动在数据前面添加了3行,导致没对应上,怎么解决

6 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-13 17:40:13
沙发
您好,根据您提供的信息,暂无法判断问题出现的原因,请您提供一个可以复现的Demo,我们这边复现后调研一下。
回复 使用道具 举报
anyOneCode
注册会员   /  发表于:2023-9-14 09:24:13
板凳
Joestar.Xu 发表于 2023-9-13 17:40
您好,根据您提供的信息,暂无法判断问题出现的原因,请您提供一个可以复现的Demo,我们这边复现后调研一下 ...

你好我这里样式表头是通过spread.fromJSON(jsonData);加载的,然后再通过setDataSource加载表内数据,后面我通过手动再列表前面添加固定列,导致spread.fromJSON添加的格式化没起作用,但我把添加固定列的代码注释后,样式就起效了
let cc = table.range().colCount;
        activeSheet.addColumns(cc, historyColumns.length);
        let width = activeSheet.getColumnWidth(
          cc,
          GC.Spread.Sheets.SheetArea.viewport
        );

        let tableColumns: any = [];
        // 获取table原有column
        for (let c = 0; c < cc; c++) {
          let dataField = table.getColumnDataField(c);
          let name = table.getColumnName(c);
          let tableColumn = new GC.Spread.Sheets.Tables.TableColumn();
          tableColumn.name(name);
          tableColumn.dataField(dataField);
          tableColumns.push(tableColumn);
        }
historyColumns.forEach((element) => {
          // 添加新的column
          let newTableColumn = new GC.Spread.Sheets.Tables.TableColumn();
          newTableColumn.name(element.name);
          newTableColumn.dataField(element.value);
          tableColumns.unshift(newTableColumn);
          console.log(tableColumns);
          activeSheet.setColumnWidth(0, width,GC.Spread.Sheets.SheetArea.viewpor);
          // table新增一列
          table.insertColumns(cc - 1, 1, true);
        });
上面是手动添加列的,去掉后格式化正常了
回复 使用道具 举报
anyOneCode
注册会员   /  发表于:2023-9-14 09:35:32
地板
Joestar.Xu 发表于 2023-9-13 17:40
您好,根据您提供的信息,暂无法判断问题出现的原因,请您提供一个可以复现的Demo,我们这边复现后调研一下 ...

我自己解决了
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-14 13:58:20
5#
好的,方便分享一下您是怎么解决这个问题的吗?
回复 使用道具 举报
anyOneCode
注册会员   /  发表于:2023-9-15 09:47:25
6#
Joestar.Xu 发表于 2023-9-14 13:58
好的,方便分享一下您是怎么解决这个问题的吗?

在渲染数组前unshift对应相等的对象就行

评分

参与人数 1金币 +200 收起 理由
Joestar.Xu + 200 很给力!

查看全部评分

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-15 10:22:57
7#
好的,金币奖励已送上,那就先结贴了,后续有其他问题的话随时开贴提问哈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部