找回密码
 立即注册

QQ登录

只需一步,快速开始

Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-1-2 17:55:02
11#
本帖最后由 Richard.Huang 于 2024-1-11 09:53 编辑
动爸 发表于 2024-1-2 16:30
我觉得数据源你可以自己组装一下就很容易实现了,类似的,你可以参考一下这个帖子,都是相同的一个问题。 ...

您好,经过调研和测试,我们发现主要原因是,目前GcExcel并不支持IMAGE函数,因此导出PDF会直接计算为#VALUE,而导致导出的Excel文件没有正确展示是因为Excel不支持IMAGE函数中传入base64字符串的参数,只支持传入一个url。因此会出现导入SpreadJS没问题,而Excel中不展示的问题。对于GcExcel目前不支持IMAGE函数的问题,我们已经计划在未来进行这块功能的开发。需求编号:DOCXLS-6740
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-1-15 14:12:04
12#
最新调研进展:请问您的帖子中关于image的信息是从“迷你图”中得到的是吗?您似乎是想实现一个迷你图在GcExcel中的模板绑定和导入导出?如果是的话,那么本贴之前关注的对于IMAGE函数的需求就变成了对Sparkline函数的支持
回复 使用道具 举报
动爸
金牌服务用户   /  发表于:2024-1-18 15:45:32
13#
Richard.Huang 发表于 2024-1-15 14:12
最新调研进展:请问您的帖子中关于image的信息是从“迷你图”中得到的是吗?您似乎是想实现一个迷你图在GcE ...

不是,是使用sheet的公式实现的

  1. sheet.setFormula(row, col, '=IMAGE("' + "data:image/png;base64," + base64String + '","' + "4," + image.width + "," + image.height + '")');
复制代码


回复 使用道具 举报
JoeJin
超级版主   /  发表于:2024-1-18 16:01:31
14#
动爸 发表于 2024-1-18 15:45
不是,是使用sheet的公式实现的

想确认一下您的场景。

您是在 SpreadJS 中,使用您正文中提到数据源,SetDatasource。给 Sheet binding 数据源时,可以正确的得到 Image。
希望把这个行为,照搬至服务端,使用相同的数据源,在 GcExcel 中,完成相同的结果,是吗?
回复 使用道具 举报
动爸
金牌服务用户   /  发表于:2024-1-18 16:12:10
15#
JoeJin 发表于 2024-1-18 16:01
想确认一下您的场景。

您是在 SpreadJS 中,使用您正文中提到数据源,SetDatasource。给 Sheet bindin ...

主要是我在代码中,设置了image公式在一个数据源定义的属性中,然后在通过数据源属性数据就是类似下面的一个结构数据。接着我把这个数据源保存到数据库中,然后在后台用Gcexcel的设置数据源,结果不生效。同时在前端使用相同的一个模板,相同的数据源重新设置也不生效。

{"name":"IMAGE","typeName":"SparklineExValue","value":{"hAlign":1,"drawType":1,"clipY":0,"clipX":0,"vAlign":1,"url":"data:image/png;base64,
回复 使用道具 举报
JoeJin
超级版主   /  发表于:2024-1-18 17:57:26
16#
动爸 发表于 2024-1-18 16:12
主要是我在代码中,设置了image公式在一个数据源定义的属性中,然后在通过数据源属性数据就是类似下面的 ...

OK, 我看您也提到前端并不能起效,目前来看,您提到的这个用法,不太容易总结为一个特定的需求。

此外我也看了您另一个关于 RichText 的帖子,应该和本贴中提到的用法相同。

这里我想补充一些相关信息。 SpreadJS 中,是有一个特殊的能力,数据源在特定条件下,有可能识别数据源中的类型,以特定的方式显示出来,例如您数据源中写的 RichText 或者 Image。
但需要注意的是这个绑定的用法有限制,并且其不是一个专门有数据绑定提供的功能。

其原理本身利用了 JS 语言的对象是无类型的,因此当给 SpreadJS 的一个单元格设置内容(Content)时,SpreadJS 会根据 Content 中提到类型,来识别并展示为 RichText 或者 Image。
您可以将次策略理解为 SpreadJS 内部机制,作为特性使用是有一定风险,存在。

而到了 GcExcel,因为 Java 或者 C# 为强类型语言。这样的特性就没有了,需要 case by case 的去支持。

如果上述信息,您不能完全理解,请谅解产品内部的原理,不能完全讲透。

————————————————————————————

回到您原始的需求,猜测您应该是希望在服务端,把图片组织好,以 Excel / PDF 的形式导出。
GcExcel 本身因为没有 UI,因此自身没有图片渲染的部分。
所以有两个方向,您可以参考。
1. 放弃使用数据源,自行使用 API 添加图片。
2. 将图片传到远程服务器上,使用 Image(URL) 来解决需求。需要注意的是,Image 公式在 GcExcel 中不支持 Base64 格式(与 Excel 想通),所以需要将图片传到远程服务器。但通过这种方式,您可以使用模板功能,以绑定数据源的方式解决问题(数据源中存储图片的URL地址)。额外需要注意的是,Image目前并不支持导出 PDF。

您可以根据上面的信息来决定如何解决问题。

感谢您的反馈。同时,也很抱歉我们没能做到让您能按照您的第一印象来使用GcExcel 和 SpreadJS。

另外对于 Image 支持导出 PDF,如之前的回答中提到,我们将会在未来的版本中支持。
回复 使用道具 举报
动爸
金牌服务用户   /  发表于:2024-1-18 18:11:30
17#
JoeJin 发表于 2024-1-18 17:57
OK, 我看您也提到前端并不能起效,目前来看,您提到的这个用法,不太容易总结为一个特定的需求。

此外 ...

好吧。现在是急迫在GCEXCEL中使用IMAGE函数。
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-1-19 09:30:18
18#
动爸 发表于 2024-1-18 18:11
好吧。现在是急迫在GCEXCEL中使用IMAGE函数。

好的,目前对于IMAGE函数的调研开发还在紧锣密鼓的进行中,后续新的版本支持了IMAGE函数后,我们会第一时间在本贴中通知您。
回复 使用道具 举报
动爸
金牌服务用户   /  发表于:2024-6-24 17:38:30
19#
本帖最后由 动爸 于 2024-6-24 17:40 编辑

我使用的是数据源的方式,现在重新打开之后图片变成了这样。请问如何在GCEXCEL中获取该单元格中的图片呢?
我试过使用 Range.getBackgroundImage() 是null ,getValue 也是返回null 。但是上面明显有个显示[object object]的。
我现在就是想要在后端自己获取这个图片信息进行加载处理,但是现在是在GCEXEL中转成后,图片居然不见了。





下面代码中,一个是从前端传递过来的 json 直接保存成源文件,另外一个是gcexel加载了一下,然后再重新保存成ssjson的结果

源文件 :








本帖子中包含更多资源

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

x
回复 使用道具 举报
动爸
金牌服务用户   /  发表于:2024-6-24 17:51:53
20#
这是个很严重的BUG啊!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部