请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

俊123

初级会员

36

主题

100

帖子

284

积分

初级会员

积分
284
俊123
初级会员   /  发表于:2025-3-27 14:20  /   查看:111  /  回复:8
10金币
本帖最后由 俊123 于 2025-3-27 14:23 编辑

SpreadJS 用 sheet.toJSON()方法 提取出来的sheetJson, 然后在java后端用GCexcel 的 workbook.getWorksheets().get("xx").fromJson(sheetJson);  更新sheetJson,提示异常,Invalid argument: Text  。 版本是spread.16.1.1  gcexcel-6.1.2

sheetJson.rar

3.44 KB, 下载次数: 8

最佳答案

查看完整内容

您好,了解到您这边的使用场景,实际上不仅仅是旧版本,直至现在最新V18版本,SpreadJS都不具备将Sheet的JSON无损导出导入的能力,即使是从一个SpreadJS导入到另一个SpreadJS中也会存在一些问题。 因此最好的方法是您在GcExcel中去实现拼接的效果,简而言之,将SpreadJS A和SpreadJS B都完整地导出并导入到GcExcel中,然后移除掉多余的Sheet,将需要的Sheet拼接起来即可,最后导出为PDF,应该就可以实现您的需求。 具体可以 ...

8 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2025-3-27 14:20:13
来自 8#
您好,了解到您这边的使用场景,实际上不仅仅是旧版本,直至现在最新V18版本,SpreadJS都不具备将Sheet的JSON无损导出导入的能力,即使是从一个SpreadJS导入到另一个SpreadJS中也会存在一些问题。

因此最好的方法是您在GcExcel中去实现拼接的效果,简而言之,将SpreadJS A和SpreadJS B都完整地导出并导入到GcExcel中,然后移除掉多余的Sheet,将需要的Sheet拼接起来即可,最后导出为PDF,应该就可以实现您的需求。

具体可以参考:https://www.grapecity.com.cn/dev ... eet/WorkWithSheets#复制或移动工作表
回复 使用道具 举报
俊123
初级会员   /  发表于:2025-3-27 14:32:23
2#
异常信息:
java.lang.IllegalStateException: Invalid argument: Text
        at com.grapecity.documents.excel.i.f.d(Unknown Source)
        at com.grapecity.documents.excel.i.k.d(Unknown Source)
        at com.grapecity.documents.excel.p.b.ab.a(Unknown Source)
        at com.grapecity.documents.excel.p.b.ab.a(Unknown Source)
        at com.grapecity.documents.excel.p.b.ab.a(Unknown Source)
        at com.grapecity.documents.excel.p.b.ab.b(Unknown Source)
        at com.grapecity.documents.excel.p.b.ab.a(Unknown Source)
        at com.grapecity.documents.excel.p.b.ab.a(Unknown Source)
        at com.grapecity.documents.excel.p.b.aa.a(Unknown Source)
        at com.grapecity.documents.excel.p.b.aa.a(Unknown Source)
        at com.grapecity.documents.excel.p.b.aa.a(Unknown Source)
        at com.grapecity.documents.excel.Workbook.fromJson(Unknown Source)
        at com.grapecity.documents.excel.dQ.fromJson(Unknown Source)
        at com.grapecity.documents.excel.dQ.fromJson(Unknown Source)
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2025-3-27 14:47:18
3#
您好,我将您的文件在SpreadJSV16.0.7中导入,并以sheet.toJSON()的方法导出。后在GcExcelV6.1.2中通过fromJSON处理没有出现问题,因此猜测是您提供的这个JSON文件存在问题,是否方便将您这个json文件产出的流程告知详细,方便我们具体排查原因
回复 使用道具 举报
俊123
初级会员   /  发表于:2025-3-27 15:04:55
4#
        /**
         *  获取指定sheet页json结果,多个
         */
        function getSheetsWithStaticSheetComments(spread) {
            const sheetResult = [];
            
            // 遍历所有工作表
            for (let i = 0; i < spread.getSheetCount(); i++) {
                const sheet = spread.getSheet(i);
                let hasStaticSheetComment = false;
             
                
                const sheetComment = sheet.comments.get(0, 0);
                
                        if (sheetComment!=null) {
                                const sheetCommentText = sheetComment.text();
                                //console.log(sheetCommentText);       
                                // 如果找到符合条件的批注,将sheet信息加入返回结果       
                                if (sheetCommentText!=null && sheetCommentText == 'staticSheet=true') {
                                   
                                    sheetResult.push({
                                        sheetIndex: i,
                                        sheetName: sheet.name(),
                                        sheetJson: sheet.toJSON()
                                    });                            
                                }
                        }               
            }
            
            return sheetResult;
        }
回复 使用道具 举报
俊123
初级会员   /  发表于:2025-3-27 15:23:29
5#
本帖最后由 俊123 于 2025-3-27 15:27 编辑

用的 sheet.toJSON() 获取的json, 中间没做其它处理, SpreadJS版本是16.1.1

SpreadJS 导出的sheetJson  在  SpreadJS 里面加载是可以的 ,用GcExcel就不行;  JSON文件应该没有问题,看是不是某些属性在gc里面不兼容。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2025-3-27 17:47:34
6#
您好,绝大多数情况下前后端都是兼容的,我本地也测试了一下未能复现出您的这个问题。

最好还是您提供一个可以复现此问题的JSON,这边复现一下看看。

另外您这边具体是有什么样的需求呢?为什么要把SpreadJS中的JSON导出传给GcExcel呢?
回复 使用道具 举报
俊123
初级会员   /  发表于:2025-3-27 18:05:34
7#
本帖最后由 俊123 于 2025-3-27 18:11 编辑

1楼附件就是 sheet的json

需求情况有点特殊, 先用SpreadJS在线编辑带有很多sheet的模版,标记其中某个或多个sheet为特殊sheet,单独取出来保存为sheetjson

然后在其它业务中用 GcExcel 拼接新的sheet,在转换为pdf打印
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-3-31 10:11:27
9#
您好,根据Joestart的回复,您提出的问题应该已经解释清楚了,这边就先结贴了,有问题可以发新帖~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部