使用apose.cell的SDK,excel转pdf,图片丢失

@xiaoman
关于转换EXCEL到PDF格式,我们目前支持以下图片格式:PNG,JPG,JPEG,BMP,EMF,WMF,TIFF,GIF和SVG。

好的,感谢您的解答! 另外,我们公司现在有一个种业务场景,需要使用贵公司aspose.cell的SDK中的智能填充,但是据我了解,目前有几种填充场景好像不支持.
1.单元格中,除了占位符外还有其他文案描述
2.一个单元格存在多个占位符
3.涉及两层数据结构,竖状结构
如excel所示:
智能填充模板.xlsx.zip (13.6 KB)

以上诉求,还烦请您帮忙解答一下,在最新版中是否已经支持了 谢谢!

@xiaoman
你可以使用Smart Markers去实现你的需求。关于如何使用 Smart Markers,请参考以下文档。

您说的这个文档已经研究过了,那就是说最新版本也不支持我上述说的几种场景了?

image.png (3.5 KB)

另外,关于上述图片这个样例,数据源有没有使用Map的例子提供?,现在提供的是JavaBean的.

@xiaoman
你愿意提供样例文件,测试数据和可运行的测试代码吗? 我们很快就会检查。

@xiaoman
请参考文档

来实现你的需求。

稍后我们也会根据你的文件做一个样例工程给你。

aspose样式研究.zip (296.2 KB)

代码和模板以及预想的结果和实际结果在这里 麻烦看看 谢谢你哈

代码和模板已经提供

@xiaoman
通过使用样例文件和代码进行测试,我们可以复现问题。发现当使用smart marker进行数据替换时,结果文件数据错误。

我们已经在内部问题跟踪系统中打开了以下新问题单,并将根据Free Support Policies中提到的条款提供修复。

问题单号:CELLSJAVA-46002

@xiaoman ,

您的源文件是用WPS生成的,但是我本地下载并安装了WPS,似乎WPS并不支持直接插入webp图片,请问您是如何插入webp图片到源文件中的?

另外,源文件在Office Excel中打开,会提示修复文件,确认修复后并另存文件,发现Excel将文件中的图片转换成了png图片。

基于以上情况,建议您将webp图片转换成png图片,再重新插入到源文件中。

图片插入是用的apache.poi框架实现的

这个问题是要在新的版本中解决吗 还是说你们还要经过讨论排期? 我们现在非常希望你们能实现这个功能,以便于适配我们公司业务场景 ,谢谢

@xiaoman
code.zip (18.1 KB)
附件中包含了修改的模板文件, 代码以及生成的文件。
1,最好你能在Excel中定义named range _CellsSmartMarkers,这样我们就不需要在代码中用wb.getWorksheets().get(0).getCells().createRange(“A6:F8”).setName(“_CellsSmartMarkers”); 来生成区域。
我们依赖named range “_CellsSmartMarkers” 来寻找所有需要一起处理的 smart marker。

2,我们目前不支持单元格值的一部分作为smartmarker, 所以请把他们单独放在一个单元格中, 见模板文件。

@xiaoman

因为Pdf不支持webp格式,所以需要在生成pdf 前把webp转换成其他格式的图片,但是JDK 不支持webp,因此我们需要时间来寻找解决方案。

我们在Excel中打开模板文件的时候,Excel会弹出告警。目前而言最好在插入webp图片前,先用第三方库转换成其他格式。

好的,那我先自己转一下格式.谢谢你们的解答.

@xiaoman
不客气。感谢你的反馈。如果你有任何疑问,请随时联系我们。

谢谢你的解答:
1.如果不支持单元格值的一部分作为smartmarker,那我们估计就用不了这个smartmarker功能了,因为对于我们的用户来说,这样就做了限制,客户体检会比较差.
2.另外我在想另外一个方案,就是如果smartmarker无法填充这样的场景,我是否可以先试用smartmarker智能填充一遍,再自己手动遍历判断是否有占位符,自己手动替换,但是发现smartmarker填充完后,找不到的占位符会被去除掉,这个有参数设置不去除吗?这样我就可以在smartmarker标记完了,手动找到没有填充的cell进行填充参数

@xiaoman
作为替代方案,你可以先手动替换掉常量值和smartmarker标记混合的单元格,然后再使用aspose.cells处理smartmarker。

好的 我试试看.
另外我给的样例中还有个 使用嵌套对象的数据填充模板和代码,官方样例给的是javabean的方式,我现在的需求是想改成Map作为数据源.