lynn8588 发表于 2023-1-6 18:43:02

GCExcel save报错[DOCXLS-7376]

本帖最后由 Ellia.Duan 于 2023-1-9 12:31 编辑

Hi team,

我这里有份文件(附件里)用Excel打开是好的,但是使用GCExcel打开后,然后保存就报错。麻烦帮忙解决下,这个关系到我们保存报表功能。比较紧急,麻烦了!
我自己简单写了一下也能重现报错
public static void main(String[] args) {
    //extracted();
    Workbook workbook=new Workbook();
    workbook.open("test555.xlsx");

    getWorkbookByte(workbook);
    System.out.println("sssss");
}


Ellia.Duan 发表于 2023-1-6 19:12:17

本帖最后由 Ellia.Duan 于 2023-1-9 12:31 编辑

您好,用您的excel文件,复现了问题,这边将此贴置为保留处理,移至bug反馈区,待有进展,及时通知您。[DOCXLS-7376]

Ellia.Duan 发表于 2023-1-10 11:28:54

经过研发调研,问题是:
打开您的excel文件,然后点击另存为,excel会提示这个错误

然后点击继续,您将看到一个保存失败的对话框


所以GcExcel 将在V6.0.3中跳过这个错误进行保存。
同时建议您这边检查您提供的excel文件,使其可以正常使用。

Ellia.Duan 发表于 2023-1-11 09:35:25

本帖最后由 Ellia.Duan 于 2023-1-11 09:38 编辑

您好,鉴于文件损坏严重,这边新建了excel文件,然后将您的test555.xlsx中第一个sheet 有内容的相关部分进行了复制,在新excel文件中进行粘贴,然后在GcExcel中进行open,save 没有报错。
如下图所示:

lynn8588 发表于 2023-1-11 10:00:33

Ellia.Duan 发表于 2023-1-11 09:35
您好,鉴于文件损坏严重,这边新建了excel文件,然后将您的test555.xlsx中第一个sheet 有内容的相关部分进 ...

您好,您能后台debug我告诉我哪些报表的哪些格子有问题吗?客户不会说我导出有问题,我重新建一个excel然后一个个copy过去,所以我想知道是哪些报错,然后我也找下解决方法

lynn8588 发表于 2023-1-11 11:19:25

lynn8588 发表于 2023-1-11 10:00
您好,您能后台debug我告诉我哪些报表的哪些格子有问题吗?客户不会说我导出有问题,我重新建一个excel然 ...

因为我看到GCExcel报null引用,那应该能追踪到是哪里空了,哪里有问题,麻烦您直接告诉我

lynn8588 发表于 2023-1-11 16:58:59

lynn8588 发表于 2023-1-11 11:19
因为我看到GCExcel报null引用,那应该能追踪到是哪里空了,哪里有问题,麻烦您直接告诉我

Hi team,

GCExcel使用的版本是5.2.5,Spreadjs使用的是15.2.4。
流程是
1.使用GCExcel拼装workbook,这时保存没有报错(附件里有生成的excel文件)
2.使用spreadjs渲染这套文件,然后修改一个格子,点击保存。(在传到后台之前,我保存了一份json文件,见附件)
3.后台保存时使用GCExcel接收二进制流,然后打开保存报错:wb.save报错,错误看附件视频,并且之前你们自己也重现出来了。

private static byte[] getWorkbookByte(Workbook wb) {
//      Workbook wb = new Workbook();
//      wb.getActiveSheet().getRange("A1");
      try{
            OutputStream os = new ByteArrayOutputStream();
            wb.save(os, SaveFileFormat.Xlsx);
            byte[] bytes = ((ByteArrayOutputStream) os).toByteArray();
            return bytes;
      }catch (Exception ex){
            throw ex;
      }

    }

Ellia.Duan 发表于 2023-1-11 17:55:41

本帖最后由 Ellia.Duan 于 2023-1-11 18:18 编辑

您好,这边做了一个简单测试,

使用您的excel文件,导入到GcExcel中,然后保存未报错。

但是此时打开test.xlsx文件已经出现了问题

还有就是这边另存你发的excel文件,也会报错

所以在第一步导出GcExcel之前就出现了问题,不用说,后面的导入到SpreadJS中,或者再次导入到GcExcel中。

lynn8588 发表于 2023-1-11 18:24:59

Ellia.Duan 发表于 2023-1-11 17:55
您好,这边做了一个简单测试,

使用您的excel文件,导入到GcExcel中,然后保存未报错。


请使用原始文件

Ellia.Duan 发表于 2023-1-12 14:07:17

lynn8588 发表于 2023-1-11 18:24
请使用原始文件

您好,这边下载了您没有经过POI处理的原始文件,然后在GcExcel中做了删除sheet操作,如下所示:


并未报错,且生成的test1.xlsx文件可以正常打开。
在Designer中导入生成的test1.xlsx文件,可以正常导入,修改其中一个sheet的值
然后导出excel文件,
再次导入到GcExcel中,GcExcel可以正常save 。如下图所示:


建议您,使用未经POI处理的文件来进行GcExcel和SpreadJS相关处理。
页: [1]
查看完整版本: GCExcel save报错[DOCXLS-7376]