找回密码
 立即注册

QQ登录

只需一步,快速开始

扁担宽板凳长
金牌服务用户   /  发表于:2024-1-11 15:24  /   查看:2575  /  回复:23
本帖最后由 Richard.Huang 于 2024-1-22 17:00 编辑

产品:GcExcel
版本:V6.2.4
调研编号:DOCXLS-9628

你好,gcexcel运行一段时间后,usedRange.find方法时,偶现抛出异常,java.lang.IllegalArgumentException: Invalid argument: com.grapecity.documents.excel.h.bX@14bf84ce


具体堆栈如下:

java.lang.IllegalArgumentException: Invalid argument: com.grapecity.documents.excel.h.bX@14bf84ce
        at com.grapecity.documents.excel.h.bY.a(Unknown Source)
        at com.grapecity.documents.excel.h.bY.a(Unknown Source)
        at com.grapecity.documents.excel.h.cb.l(Unknown Source)
        at com.grapecity.documents.excel.h.cf.o(Unknown Source)
        at com.grapecity.documents.excel.i.p.d(Unknown Source)
        at com.grapecity.documents.excel.i.p.b(Unknown Source)
        at com.grapecity.documents.excel.i.k.D(Unknown Source)
        at com.grapecity.documents.excel.i.k.c(Unknown Source)
        at com.grapecity.documents.excel.G.aR.l(Unknown Source)
        at com.grapecity.documents.excel.dQ.a(Unknown Source)
        at com.grapecity.documents.excel.dQ.e(Unknown Source)
        at com.grapecity.documents.excel.cs.getValue(Unknown Source)
        at com.grapecity.documents.excel.RangeFindReplace$FindReplaceImpl.a(Unknown Source)
        at com.grapecity.documents.excel.RangeFindReplace$FindReplaceImpl.e(Unknown Source)
        at com.grapecity.documents.excel.RangeFindReplace$FindReplaceImpl$5.invoke(Unknown Source)
        at com.grapecity.documents.excel.RangeFindReplace$FindReplaceImpl.b(Unknown Source)
        at com.grapecity.documents.excel.cs.find(Unknown Source)
        at com.grapecity.documents.excel.cs.find(Unknown Source)
        at com.guandata.complex_report_pro.TemplateInfo.collectTemplateInfo(TemplateInfo.java:39)


TemplateInfo.java 39行 代码如下:
image.png677210693.png

find的内容一直是固定的G_TEXT
image.png12265929.png

问题是偶现的,无法demo,一般重启服务,问题会消失,运行一段时间又出现,找不到原因。

23 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-1-11 16:50:50
沙发
本帖最后由 Joestar.Xu 于 2024-1-11 17:02 编辑

您好,问题已收到,这边调研一下,后续有进展我会在本贴中回复您。

问题编号:DOCXLS-9628
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-1-16 15:17:53
板凳
您好,根据您目前提供的堆栈信息来看无法准确判断问题出现的原因,为了能够进一步复现和调试,需要您这边提供一个可以复现该问题的Demo。
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
扁担宽板凳长
金牌服务用户   /  发表于:2024-1-17 11:40:15
地板
本帖最后由 扁担宽板凳长 于 2024-1-17 11:51 编辑

你好,这个问题确实无法demo复现,即使我把客户的模版和数据都copy下来,执行相同的代码。复现需要准确收集到所有触发该bug的条件,目前触发条件明显是不清晰和不足的。

能否再尝试通过报错信息是否能反查一下代码,看什么情况会抛出IllegalArgumentException,以便复现。另外,通过报错信息无法定位出问题,是否可以进行一下报错的优化,以定位问题。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-1-17 14:09:32
5#
收到,这边反馈一下,后续有进展我会在本帖中回复您。
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-1-17 14:22:21
6#
另外问一下,您这边是否有使用多线程?
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-1-17 14:39:40
7#
您帖子中的代码是在找包含固定文本的sheet,把index存起来吗?

这个方法具体是什么业务场景呢?看上去一直在循环调用,为什么不一开始调用一下就好了呢?
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
扁担宽板凳长
金牌服务用户   /  发表于:2024-1-17 15:38:44
8#
多线程:是的,我们把gcexcel是放在到spring-boot项目中,对外提供http服务,会有多线程访问,但每次调用的Workbook都是new出来的。

使用场景介绍:【图片地址转真实图片】,图片类型的模版字段 {{ds.imageurl}},产品期望渲染后是真正的图片,而不是文本。则需要在执行完workbook.processTemplate()后,再遍历workbook有图片的sheet中的cells,将图片地址转成图片插入。https://www.grapecity.com.cn/dev ... WithShapeAndPicture

为什么会循环调用find:没有一直循环调用,仅在processTemplate之前,使用了本贴正文的代码,循环在每个sheet页调用find方法(find方法绑定在worksheet上),查找固定标记,收集到图片将会出现在哪些sheet页中,以便processTemplate之后,仅对指定的sheet页范围内做【图片地址转真实图片】操作。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-1-17 15:48:42
9#
收到,非常详细的回复

我们这边根据您的信息再调研一下,另外提供给您两个思路看能否解决该问题:

1、在Find之前,关闭计算引擎,找完之后再打开。
2、不使用Find方法,而是直接用遍历的方式去查找固定的文本。
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-1-17 16:04:22
10#
您好,还有一些问题想确认,这个模板是用户自己制作的吗?模板里面是否包含有动态数组公式?

能否提供一下出错的模板文件呢?
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部