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

QQ登录

只需一步,快速开始

jin.ye

金牌服务用户

114

主题

230

帖子

930

积分

金牌服务用户

积分
930

[处理中] v8.0.5 GC卡死

jin.ye
金牌服务用户   /  发表于:2025-7-2 14:09  /   查看:47  /  回复:5
本帖最后由 Wilson.Zhang 于 2025-7-3 11:15 编辑


产品:GcExcel
版本:8.0.5
调研编号:GCEXCEL-11783


public static void
main(String[] args) {
    String path = "L:\\下载文件\\P005-CF001-现金流量表.xlsx";
    try {
        long start = System.currentTimeMillis();
        Workbook workbook = new Workbook();
        workbook.open(path);

        String json = workbook.toJson();
        long end = System.currentTimeMillis();
        System.out.println(end - start);
    } catch (Exception e) {
        e.printStackTrace();
    }
}



Excel能正常打开

本帖子中包含更多资源

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

x

5 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2025-7-2 16:51:32
沙发
您好!使用8.0.5和最新的8.1.3版本测试,发现在不执行Workbook:toJson()时,代码自上而下的流程可以正常执行,如下图所示:



如果加上Workbook:toJson(),就会不知道执行到哪一步了,如下图所示,控制台无打印信息,且程序未执行结束:


我帮您调研下先,请问下您的实际需求是需要通过Workbook:toJson()序列化为字符串在后端Java代码中使用还是序列化为ssjson文件?

本帖子中包含更多资源

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

x
回复 使用道具 举报
jin.ye
金牌服务用户   /  发表于:7 天前
板凳
Wilson.Zhang 发表于 2025-7-2 16:51
您好!使用8.0.5和最新的8.1.3版本测试,发现在不执行Workbook:toJson()时,代码自上而下的流程可以正常执 ...

实际需求是:提供给前端sjs做外部链接用
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:7 天前
地板
jin.ye 发表于 2025-7-3 10:09
实际需求是:提供给前端sjs做外部链接用

正在帮您调研这个问题,调研编号是GCEXCEL-11783。

给前端SpreadJS做外部链接用,有限制文件格式吗?我测了下,Workbook:save()保存sjs文件类型正常,而且也能在SpreadJS中打开。如果不限制的话,可以先使用sjs文件类型,等问题调研结论出来再向您同步。
回复 使用道具 举报
jin.ye
金牌服务用户   /  发表于:7 天前
5#
Wilson.Zhang 发表于 2025-7-3 11:20
正在帮您调研这个问题,调研编号是GCEXCEL-11783。

给前端SpreadJS做外部链接用,有限制文件格式吗? ...

都是.xlsx文件
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:7 天前
6#

xlsx文件的话可以正常导入导出。

关于您的文件在toJson导出慢的原因是存在范围很大的数据验证:
WBR983089 WLN983089 WVJ980389
导致导出时datatable范围过大。

可以采用指定行数和列数的方式,减少导出范围,如下代码所示:
  1. Workbook workbook = new Workbook();
  2. workbook.open("E:\\Downloads\\Demo.xlsx");
  3. workbook.getWorksheets().forEach(
  4.         sheet -> {
  5.             IRange range = sheet.getUsedRange();
  6.             sheet.setRowCount(range.getRow() + range.getRowCount());
  7.             sheet.setColumnCount(range.getCount()+range.getColumnCount());
  8.         });
  9. SerializationOptions options = new SerializationOptions();
  10. options.setIgnoreRangeOutOfRowColumnCount(true);
  11. workbook.toJson(new FileOutputStream("F:\\test.json"), options);
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部