找回密码
 立即注册

QQ登录

只需一步,快速开始

wutao@digiwin
金牌服务用户   /  发表于:2022-11-22 16:17  /   查看:4709  /  回复:12
本帖最后由 Lynn.Dou 于 2022-11-23 17:32 编辑

使用addRows插入一行后发现新增行位于 单元格区域,可以在列头区域指定位置插入行吗?



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

12 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-22 17:05:39
沙发
本帖最后由 Lynn.Dou 于 2022-11-22 18:07 编辑

您好,
从图1来看,“任务名称”等是自定义列头内容,addRows方法是对表单内容区域实现的插入行,所以插入行效果如下:

因Excel不支持自定义行列头,如果设置了将列头作为冻结行导出,就会出现您图2所示的效果。
猜测您的需求为:导出的excel文件中显示新增的行在“任务名称”冻结行之前,
如果是,目前没有API可以在列头区域新增行,已将此作为需求记录下来了,如果后面有相关计划会在贴中通知您。(SJS-15850)
有一个思路您可以考虑下:
先使用setRowCount方法给列头设置多行,然后使用setValue修改列头单元格的value,以实现“插入行”的效果。
  1. sheet.setRowCount(2,GC.Spread.Sheets.SheetArea.colHeader);
  2. sheet.setValue(0,0,null,GC.Spread.Sheets.SheetArea.colHeader);
  3. sheet.setValue(1,0,"任务名称",GC.Spread.Sheets.SheetArea.colHeader)
复制代码




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
wutao@digiwin
金牌服务用户   /  发表于:2022-11-22 17:14:42
板凳
我的表头行数,也是不固定的
这是好的方法吗

顺便说下,我的需求是:
导出后表头上 插入一行此表的名称

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1金币 +600 收起 理由
Lynn.Dou + 600 赞一个!

查看全部评分

回复 使用道具 举报
wutao@digiwin
金牌服务用户   /  发表于:2022-11-22 17:22:50
地板
Lynn.Dou 发表于 2022-11-22 17:05
您好,
从图1来看,“任务名称”等是自定义列头内容,addRows方法是对表单内容区域实现的插入行,所以插入 ...

我的表头行数,也是不固定的
这是好的方法吗

顺便说下,我的需求是:
导出后表头上 插入一行此表的名称
回复 使用道具 举报
wutao@digiwin
金牌服务用户   /  发表于:2022-11-22 17:25:50
5#
如果使用setRowCount,那么每个单元格都要setValue,这不是一个好方法

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
wutao@digiwin
金牌服务用户   /  发表于:2022-11-22 17:27:06
6#
Lynn.Dou 发表于 2022-11-22 17:05
您好,
从图1来看,“任务名称”等是自定义列头内容,addRows方法是对表单内容区域实现的插入行,所以插入 ...

大哥,看到了回复下哦
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-22 18:25:56
7#
目前这边也没有更好的方案了。可以根据上述思路自己封装一个方法,根据业务需求判断行的位置,setValue修改单元格的值。这边也尝试封装下,预计明天贴中回复。
前面已提到,已将此问题作为需求记录下来了,如果后面有相关计划会在贴中通知您的。
(贴中已附上需求编号)
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-23 10:43:14
8#
附件demo实现思路您可以参考下,主要封装方法代码如下:

  1. // 封装方法,实现表头向上插入行
  2.             function addRowColHeader(row, rowCount) {
  3.                 sheet.suspendPaint();
  4.                 var oldRowCount = sheet.getRowCount(GC.Spread.Sheets.SheetArea.colHeader);
  5.                 sheet.setRowCount(oldRowCount + rowCount, GC.Spread.Sheets.SheetArea.colHeader);
  6.                 //修改列头单元格value
  7.                 for(var c = 0; c < sheet.getColumnCount(); c++) {
  8.                     var value = sheet.getValue(0, c, GC.Spread.Sheets.SheetArea.colHeader);
  9.                     sheet.setValue(oldRowCount + rowCount - 1, c, value, GC.Spread.Sheets.SheetArea.colHeader);
  10.                     sheet.setValue(0,c,null, GC.Spread.Sheets.SheetArea.colHeader);
  11.                 }
  12.                 sheet.resumePaint();
  13.             }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-24 13:41:05
9#
电话沟通中了解到您的需求为导出excel文件时新增一行用于放置表名,这边整理了两个demo,您可以参考下。

demo1:通过setRowCount间接实现表头区域插入行的效果,需要对合并单元格、value等做修改,实现较复杂,可以参考下。
demo2:通过新建一个spread,间接对冻结行做插入行,实现期待的效果,相较于demo1方案更简洁,您可以考虑下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
wutao@digiwin
金牌服务用户   /  发表于:2022-11-30 14:23:00
10#
Lynn.Dou 发表于 2022-11-24 13:41
电话沟通中了解到您的需求为导出excel文件时新增一行用于放置表名,这边整理了两个demo,您可以参考下。

...

你好,结合以上的demo2可以实现;
其中有点问题是 因为列头行数不固定,需要冻结设置:
sheet.frozenRowCount(json.sheets.Sheet1.frozenRowCount + 1 )

毕竟是 通过 new Spread的 临时方案,
纳入的需求单(SJS-15850) 如果有上线 请告知,感谢!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部