找回密码
 立即注册

QQ登录

只需一步,快速开始

果果xxxxk

初级会员

46

主题

134

帖子

436

积分

初级会员

积分
436
果果xxxxk
初级会员   /  发表于:2023-6-13 11:47  /   查看:955  /  回复:7
请问是否可以通过代码交互两列的展示,比如交换B列和E列的展示

7 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-13 12:16:36
沙发
您好,交互两列的显示具体是说将B列的数据和E列的数据交换吗?
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
果果xxxxk
初级会员   /  发表于:2023-6-13 14:09:40
板凳
Joestar.Xu 发表于 2023-6-13 12:16
您好,交互两列的显示具体是说将B列的数据和E列的数据交换吗?

嗯嗯,是的
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-13 14:26:11
地板
您好,SpreadJS目前没有对应的接口可以实现这样的操作,所以只能通过遍历的方式手动去交换这两列的数据,请参考以下代码:

  1.     sheet.suspendDirty();
  2.     sheet.suspendPaint();

  3.     let rowCount = sheet.getRowCount();
  4.     let colIndex1 = 0;
  5.     let colIndex2 = 1;

  6.     for (let i = 0; i < rowCount; i++) {
  7.       let cellValue1 = sheet.getValue(i, colIndex1);
  8.       let cellValue2 = sheet.getValue(i, colIndex2);

  9.       sheet.getCell(i, colIndex1).value(cellValue2);
  10.       sheet.getCell(i, colIndex2).value(cellValue1);
  11.     }

  12.     sheet.resumePaint();
  13.     sheet.resumeDirty();
复制代码


实现效果如下:
1.gif819360046.png
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
果果xxxxk
初级会员   /  发表于:2023-6-13 20:05:36
5#
Joestar.Xu 发表于 2023-6-13 14:26
您好,SpreadJS目前没有对应的接口可以实现这样的操作,所以只能通过遍历的方式手动去交换这两列的数据,请 ...

这样数据量大会耗时比较久吧
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-14 08:44:09
6#
果果xxxxk 发表于 2023-6-13 20:05
这样数据量大会耗时比较久吧

您好,做这种遍历操作是会在一定程度上影响性能的,但是目前来说没有什么其他的方法能够实现您的需求。
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
果果xxxxk
初级会员   /  发表于:2023-6-14 10:33:50
7#
Joestar.Xu 发表于 2023-6-14 08:44
您好,做这种遍历操作是会在一定程度上影响性能的,但是目前来说没有什么其他的方法能够实现您的需求。

通过拖动的实现可以吗,另外问下下面拖动的方式有办法优化吗,现在数据多也会很慢
spread
      .commandManager()
      .execute({
        cmd: 'dragDrop',
        sheetName: 'Sheet1',
        fromRow: -1,
        fromColumn: 2,
        toRow: -1,
        toColumn: 4,
        rowCount: -1,
        columnCount: 1,
        copy: false,
        insert: true,
        option: GC.Spread.Sheets.CopyToOptions.value,
      });
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-14 10:39:06
8#
果果xxxxk 发表于 2023-6-14 10:33
通过拖动的实现可以吗,另外问下下面拖动的方式有办法优化吗,现在数据多也会很慢
spread
      .comm ...

您好,拖动的底层实现上也还是通过遍历去做的,因此也是会在一定程序上去影响性能的,大数据量的情况下难免会有性能上的瓶颈,这个是受浏览器性能限制的,目前来说是没有办法再进一步有大的优化了。
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部