找回密码
 立即注册

QQ登录

只需一步,快速开始

10E32
注册会员   /  发表于:2022-6-30 12:22  /   查看:7056  /  回复:20
1金币
本帖最后由 Lynn.Dou 于 2022-7-4 13:50 编辑

用户上传excel文件,前端生成json到后端,后端workbook的fromJson成功,单个sheet的toJson出错。
用户数据暂时不能发出来,单看异常能确定是哪方面的问题吗?
java.lang.IndexOutOfBoundsException: Index: 4, Size: 0
        at java.util.ArrayList.rangeCheck(ArrayList.java:653)
        at java.util.ArrayList.get(ArrayList.java:429)
        at com.grapecity.documents.excel.D.ax.a(Unknown Source)
        at com.grapecity.documents.excel.D.ax.a(Unknown Source)
        at com.grapecity.documents.excel.h.j.b(Unknown Source)
        at com.grapecity.documents.excel.c.a.E.a(Unknown Source)
        at com.grapecity.documents.excel.g.bG.b(Unknown Source)
        at com.grapecity.documents.excel.g.bG.a(Unknown Source)
        at com.grapecity.documents.excel.c.a.w.a(Unknown Source)
        at com.grapecity.documents.excel.c.a.u.a(Unknown Source)
        at com.grapecity.documents.excel.c.a.u.a(Unknown Source)
        at com.grapecity.documents.excel.k.h.a(Unknown Source)
        at com.grapecity.documents.excel.k.d.a(Unknown Source)
        at com.grapecity.documents.excel.k.i.a(Unknown Source)
        at com.grapecity.documents.excel.k.i.a(Unknown Source)
        at com.grapecity.documents.excel.k.i.a(Unknown Source)
        at com.grapecity.documents.excel.k.i.b(Unknown Source)
        at com.grapecity.documents.excel.o.b.O.a(Unknown Source)
        at com.grapecity.documents.excel.o.b.W.a(Unknown Source)
        at com.grapecity.documents.excel.dz.toJson(Unknown Source)
        at com.grapecity.documents.excel.dz.toJson(Unknown Source)
        at org.shenqing.cross.service.impl.CrossReportServiceImpl.main(CrossReportServiceImpl.java:456)


Gcexcel版本:5.1.1
SpreadJs版本:15.1.1

最佳答案

查看完整内容

更新进展:报错原因是sheetJSON文件数据验证中存在跨sheet公式, 但是在新的workbook中导入此sheetJSON,并toJson导出时,找不到该sheet(即该sheet不存在),所以报错提示。 计划V5.1.5修复此问题,届时在执行toJSON方法时,会跳过该不存在的sheet信息,避免抛出异常。 临时解决方案: 您可以在执行sheet.fromJson方法后,执行workbook.toJSON方法前,通过接口删除该数据验证,示例代码如下:

20 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-6-30 12:22:52
来自 11#
更新进展:报错原因是sheetJSON文件数据验证中存在跨sheet公式,
但是在新的workbook中导入此sheetJSON,并toJson导出时,找不到该sheet(即该sheet不存在),所以报错提示。
计划V5.1.5修复此问题,届时在执行toJSON方法时,会跳过该不存在的sheet信息,避免抛出异常。
image.png275144042.png
image.png781443481.png

临时解决方案:
您可以在执行sheet.fromJson方法后,执行workbook.toJSON方法前,通过接口删除该数据验证,示例代码如下:
  1. InputStream inputStream1 = new FileInputStream(new File("sheetJson.ssjson"));
  2.         byte[] str = IOUtils.toByteArray(inputStream1);
  3.         String str1 = new String(str, "utf-8");

  4.         Workbook workbook = new Workbook();
  5.         IWorksheet worksheet = workbook.getWorksheets().get(0);
  6.         DeserializationOptions deserializationOptions = new DeserializationOptions();
  7.         deserializationOptions.setIgnoreFormula(true);
  8.         deserializationOptions.setDoNotRecalculateAfterLoad(true);
  9.         worksheet.fromJson(str1, deserializationOptions);
  10.         // 删除数据验证
  11.         worksheet.getRange("A7:I19").getValidation().delete();
  12.         workbook.toJson();
  13.         
复制代码


回复 使用道具 举报
ann悬赏达人认证
初级会员   /  发表于:2022-6-30 13:46:36
2#
您好:IndexOutOfBoundsException这个是Java中数组越界的异常,要取索引为4的元素,其实数组为空,检查下报错的位置的数组信息呢
回复 使用道具 举报
10E32
注册会员   /  发表于:2022-6-30 15:37:32
3#
public static void main(String[] args) throws Exception {
        BufferedReader ins2 = new BufferedReader(new FileReader("sheetJson.txt"));
        String sheetData = ins2.readLine();
        ins2.close();
        Workbook workbook = new Workbook();
        IWorksheet worksheet = workbook.getWorksheets().get(0);
        DeserializationOptions deserializationOptions = new DeserializationOptions();
        deserializationOptions.setIgnoreFormula(true);
        deserializationOptions.setDoNotRecalculateAfterLoad(true);
        worksheet.fromJson(sheetData, deserializationOptions);
        workbook.toJson();
    }

sheetJson.zip

3.57 KB, 下载次数: 953

回复 使用道具 举报
10E32
注册会员   /  发表于:2022-6-30 15:39:06
4#
ann 发表于 2022-6-30 13:46
您好:IndexOutOfBoundsException这个是Java中数组越界的异常,要取索引为4的元素,其实数组为空,检查下报 ...

麻烦看一下我的最新回复,有错误复现
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-6-30 16:42:38
5#
您好,
问题已复现,已将此问题记录下来进一步调研,待有进展会在贴中回复您。
本贴先做保留处理。
回复 使用道具 举报
ann悬赏达人认证
初级会员   /  发表于:2022-6-30 16:54:17
6#
您好:方便提供一下前端的完整的workBook的json文件以及表格效果不 ,我这边本地调试发现大量空对象
image.png673524779.png
回复 使用道具 举报
10E32
注册会员   /  发表于:2022-6-30 17:45:38
7#
ann 发表于 2022-6-30 16:54
您好:方便提供一下前端的完整的workBook的json文件以及表格效果不 ,我这边本地调试发现大量空对象

整个表不行,空对象可能是后面的单元格没内容
Snipaste_2022-06-30_17-45-16.png
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-6-30 18:29:50
8#
这边先根据您提供的资料调研下报错原因,待有进展在贴中回复您。
回复 使用道具 举报
10E32
注册会员   /  发表于:2022-6-30 19:25:45
9#
Lynn.Dou 发表于 2022-6-30 18:29
这边先根据您提供的资料调研下报错原因,待有进展在贴中回复您。

收到,谢谢
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部