找回密码
 立即注册

QQ登录

只需一步,快速开始

小王子哈哈

注册会员

11

主题

22

帖子

101

积分

注册会员

积分
101
小王子哈哈
注册会员   /  发表于:2023-10-30 15:29  /   查看:1723  /  回复:9
1金币
本帖最后由 Lynn.Dou 于 2023-12-14 11:04 编辑


产品:SpreadJS
版本:15.2.2

有2个sheet,第一个用setDataSource绑定数据源,第二个sheet是普通的sheet,如下图
image.png227529296.png
第一个sheet,如上图,

image.png318770751.png
第二个sheet,如上图,
然后用

const json = spread.toJSON({
        includeBindingSource: true, // 是否包含数据
        ignoreStyle: false, // 是否忽略样式
        ignoreFormula: false, // 是否忽略公式
        columnHeadersAsFrozenRows: true,

      });

      excelIo.save(json, (blob) => {
        saveAs(blob, `${spread.getActiveSheet().name()}.xlsx`);
      });


代码导出excel,
发现第一个sheet能把自定义列,添加到第一行上,而第二个普通的sheet会新增一行空行,
如图:
image.png463699645.png
image.png463065185.png


这种情况要怎么处理?

最佳答案

查看完整内容

我明白了,之前误解您的意思了,如果是在同一个workBook对象中的话确实无法再进行判断了,这是目前的设计。 目前能想到的可行的解决方案是您在导出json后不要立刻将导出为Excel文件,而是创建一个新的spread对象,在这个对象中修改第二个sheet的冻结行列数据并删除第一行,然后再将这个修改完毕的spread导出为Excel,从而绕过这个问题。

9 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-10-30 15:29:21
来自 8#
我明白了,之前误解您的意思了,如果是在同一个workBook对象中的话确实无法再进行判断了,这是目前的设计。

目前能想到的可行的解决方案是您在导出json后不要立刻将导出为Excel文件,而是创建一个新的spread对象,在这个对象中修改第二个sheet的冻结行列数据并删除第一行,然后再将这个修改完毕的spread导出为Excel,从而绕过这个问题。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-10-30 18:03:04
2#
您好,没太理解您的意思,您这边想实现的效果是什么?
回复 使用道具 举报
小王子哈哈
注册会员   /  发表于:2023-10-31 08:43:50
3#
Joestar.Xu 发表于 2023-10-30 18:03
您好,没太理解您的意思,您这边想实现的效果是什么?

就是第一个sheet,是我想要的效果,把列头放在了第一行。但是第二个sheet是普通的sheet,不应该生成一个空行。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-10-31 10:42:42
4#
您好,这是目前的设计,如果您在导出第二个sheet的时候不想生成一个冻结行的话,可以将columnHeadersAsFrozenRows这个属性置为false。
回复 使用道具 举报
小王子哈哈
注册会员   /  发表于:2023-10-31 11:13:22
5#
Joestar.Xu 发表于 2023-10-31 10:42
您好,这是目前的设计,如果您在导出第二个sheet的时候不想生成一个冻结行的话,可以将columnHeadersAsFroz ...

但是设置为false,那第一个sheet就不符合了。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-10-31 13:39:35
6#
那您这边可以做一个简单的判断,如果列头上的值是您自定义的话,就将columnHeadersAsFrozenRows置为true,否则的话就置为false。
回复 使用道具 举报
小王子哈哈
注册会员   /  发表于:2023-10-31 14:08:54
7#
Joestar.Xu 发表于 2023-10-31 13:39
那您这边可以做一个简单的判断,如果列头上的值是您自定义的话,就将columnHeadersAsFrozenRows置为true, ...

就是一张表格有2个sheet,第一个sheet是自定义列头的,第二sheet是没有自定义列头的,如果columnHeadersAsFrozenRows为true,导出来excel,2个sheet都会新增一行。如果设置为false,则2个sheet都没有新增行。。这只有一个设置,怎么判断?
回复 使用道具 举报
小王子哈哈
注册会员   /  发表于:2023-10-31 17:45:49
9#
Joestar.Xu 发表于 2023-10-31 17:31
我明白了,之前误解您的意思了,如果是在同一个workBook对象中的话确实无法再进行判断了,这是目前的设计。 ...

这个我之前试过是可以的,但是新增行下面会多了样式,而且需要判断哪些sheet需要删除,哪些sheet不要删除,感觉也是麻烦,就是问下有没有更好的办法。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-10-31 17:55:37
10#
您好,刚刚的办法已经是目前能想到的最好的办法了,暂时没有更高的办法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部