找回密码
 立即注册

QQ登录

只需一步,快速开始

StarStarStar

注册会员

6

主题

15

帖子

71

积分

注册会员

积分
71
StarStarStar
注册会员   /  发表于:2024-1-10 15:58  /   查看:2148  /  回复:8
1金币
本帖最后由 Ellia.Duan 于 2024-1-10 16:52 编辑

怎么才能把名称列和地址列 互换位置,数据也更换,并且不影响前两行数据


图片2.png
图片.png

最佳答案

查看完整内容

您好,可以参考此代码: 其中pasteOption可以修改枚举值,上述代码给出的值是all,您还可以设置 [*]all [*]formatting [*]formulas [*]formulasAndFormatting [*]values [*]valuesAndFormatting https://demo.grapecity.com.cn/sp ... ipboardpasteoptions 结果如下:

8 个回复

倒序浏览
最佳答案
最佳答案
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-10 15:58:14
来自 6#
本帖最后由 Ellia.Duan 于 2024-1-11 11:49 编辑

您好,可以参考此代码:

  1.     var sheet = spread.getSheet(0);
  2.         sheet.addSpan(0, 0, 1, 5)
  3.         sheet.addSpan(1, 0, 1, 5)
  4.         sheet.setArray(2, 3, [['地址'], ['北京'], ['济南']])
  5.         sheet.setArray(2, 4, [['名称'], ['张三'], ['李四']])
  6.         sheet.getRange(2, 3, 3, 1).backColor("yellow");
  7.         sheet.getRange(2, 4, 3, 1).backColor("pink");


  8.         spread.suspendPaint()
  9.         let rowCount = sheet.getUsedRange(GC.Spread.Sheets.UsedRangeType.all).rowCount;
  10.         let colCount = sheet.getUsedRange(GC.Spread.Sheets.UsedRangeType.all).colCount;
  11.         if (sheet.setColumnCount() <= colCount) {
  12.             sheet.setColumnCount(colCount + 1)
  13.         }

  14.         var fromRange1 = [new GC.Spread.Sheets.Range(2, 3, rowCount, 1)];
  15.         var toRanges1 = [new GC.Spread.Sheets.Range(2, colCount + 1, rowCount, 1)];
  16.         spread.commandManager().execute({
  17.             cmd: "clipboardPaste", sheetName:sheet.name(),
  18.             fromSheet: sheet, fromRanges: fromRange1,
  19.             pastedRanges: toRanges1, isCutting: false, clipboardText: "",
  20.             pasteOption: GC.Spread.Sheets.ClipboardPasteOptions.all
  21.         });

  22.         let fromRange2 = [new GC.Spread.Sheets.Range(2, 4, rowCount, 1)];
  23.         let toRanges2 = [new GC.Spread.Sheets.Range(2, 3, rowCount, 1)];
  24.         spread.commandManager().execute({
  25.             cmd: "clipboardPaste", sheetName:sheet.name(),
  26.             fromSheet: sheet, fromRanges: fromRange2,
  27.             pastedRanges: toRanges2, isCutting: false, clipboardText: "",
  28.             pasteOption: GC.Spread.Sheets.ClipboardPasteOptions.all
  29.         });

  30.         let fromRange3 = [new GC.Spread.Sheets.Range(2, colCount + 1, rowCount, 1)];
  31.         let toRanges3 = [new GC.Spread.Sheets.Range(2, 4, rowCount, 1)];
  32.         spread.commandManager().execute({
  33.             cmd: "clipboardPaste", sheetName:sheet.name(),
  34.             fromSheet: sheet, fromRanges: fromRange3,
  35.             pastedRanges: toRanges3, isCutting: true, clipboardText: "",
  36.             pasteOption: GC.Spread.Sheets.ClipboardPasteOptions.all
  37.         });
  38.         spread.resumePaint()
复制代码
其中pasteOption可以修改枚举值,上述代码给出的值是all,您还可以设置

https://demo.grapecity.com.cn/sp ... ipboardpasteoptions
结果如下:
image.png657512206.png
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-10 16:50:31
2#
您好,一般来说,可以通过按下shift键然后拖动列,打开移动列的目的,这点同excel保持一致。但是由于您的前两行是合并单元格,所以不能直接移动列。
为此,您可以先取消合并单元格,然后移动列,最后再合并单元格,如下动图所示:
移动列.gif
回复 使用道具 举报
StarStarStar
注册会员   /  发表于:2024-1-10 16:53:51
3#
您好,我是想通过代码实现,需求是可以配置列的顺序,有合适的api吗
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-10 17:35:08
4#
您好,可以通过下面的代码移动列
  1. var sheet = spread.getSheet(0);
  2.         sheet.addSpan(0,0,1,5)
  3.         sheet.addSpan(1,0,1,5)
  4.         sheet.getRange(0,0,1,5).
  5.         sheet.setArray(2,3,[['地址'],['北京'],['济南']])
  6.         sheet.setArray(2,4,[['名称'],['张三'],['李四']])

  7.         spread.suspendPaint()
  8.         let rowCount = sheet.getUsedRange(GC.Spread.Sheets.UsedRangeType.all).rowCount;
  9.         let temp = sheet.getArray(2,3,rowCount,1)
  10.         sheet.setArray(2,3,sheet.getArray(2,4,rowCount,1))
  11.         sheet.setArray(2,4,temp)
  12.         spread.resumePaint()
复制代码

结果如下:
image.png454635924.png
回复 使用道具 举报
StarStarStar
注册会员   /  发表于:2024-1-11 11:06:38
5#
Ellia.Duan 发表于 2024-1-10 17:35
您好,可以通过下面的代码移动列

结果如下:

这个只能移动数据,能把格式、样式也移动吗
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-19 11:29:32
7#
您好,楼上提供的方案是否可以解决您的问题?如已解决,我将关闭此贴。
回复 使用道具 举报
StarStarStar
注册会员   /  发表于:2024-1-19 11:44:52
8#
嗯,解决了,谢谢
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-19 15:49:40
9#
好的,那本贴就先结贴啦,有问题欢迎发新帖询问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部