找回密码
 立即注册

QQ登录

只需一步,快速开始

赛鼎设计院

金牌服务用户

12

主题

30

帖子

98

积分

金牌服务用户

积分
98
赛鼎设计院
金牌服务用户   /  发表于:2023-9-21 14:30  /   查看:3253  /  回复:11
1金币
本帖最后由 Richard.Huang 于 2023-10-20 12:21 编辑

产品:SpreadJS
问题编号:SJS-20358

生成的excel和用GCExcel转pdf时候,数据被遮挡。与原网页上显示不符。
image.png785794067.png

image.png609625548.png
image.png213359679.png
福建中ssjson文件是JSON.stringify(workbook.toJSON())这样导出来的。如果转不出来,记得用JSON转一下格式。

归档.zip

240.48 KB, 下载次数: 383

最佳答案

查看完整内容

您好,经过调研,关于换行问题SpreadJS与excel 确实在这一点存在差异,但是SpreadJS在中文字体上自动换行处理的更智能一点。如您在SpreadJS Designer中制作模板,输入文字,点击“自动换行”就可以实现想要的效果,但是将其导出为excel,发现换行不对。 如果SpreadJS与Excel保持一致,那么将呈现的效果是: 这样子的换行效果应该不是您想要的效果。 所以针对上述情况,您可以 1、制作模板后将其导出为ssjson或者sjs ,然后 ...

11 个回复

倒序浏览
最佳答案
最佳答案
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-9-21 14:30:39
来自 7#
您好,经过调研,关于换行问题SpreadJS与excel 确实在这一点存在差异,但是SpreadJS在中文字体上自动换行处理的更智能一点。如您在SpreadJS Designer中制作模板,输入文字,点击“自动换行”就可以实现想要的效果,但是将其导出为excel,发现换行不对。

如果SpreadJS与Excel保持一致,那么将呈现的效果是:
image.png78582152.png
这样子的换行效果应该不是您想要的效果。
所以针对上述情况,您可以
1、制作模板后将其导出为ssjson或者sjs ,然后在GcExcel中打开ssjson或sjs ,再将其导出为pdf
2、设置稍微宽一点的列宽,在Excel中将A列设置为16px(1.38)现在是15px(1.25)可以正常显示
如下所示:
image.png184083861.png

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-9-21 18:05:40
2#
您好,您的问题已复现。调研下给您回复。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-9-22 16:20:13
3#
您好,将您上传的file.ssjson导入到在线表格编辑器中,发现可以正常显示。

image.png722227172.png
然后将其在GcExcel进行open打开,发现报错。
然后将GcExcel版本从v6.2.2降为v6.1.0 还是报错
image.png808785705.png
接下来做了下面的尝试,将file.ssjson在线表格编辑器导出为123.ssjson 。然后在GcExcel open了123.ssjson ,导出的pdf是正常的,如下图所示:
image.png746125182.png
您可以尝试用上述方式解决这个问题。
回复 使用道具 举报
赛鼎设计院
金牌服务用户   /  发表于:2023-9-25 10:25:01
4#
Ellia.Duan 发表于 2023-9-22 16:20
您好,将您上传的file.ssjson导入到在线表格编辑器中,发现可以正常显示。

我们不是通过ssjson导出的pdf。我们现在的方案是,先通过spreadjs生成excel,然后再把excel生成pdf。这块被遮挡根本原因还是excel里面单元格就被遮挡了。所以生成的pdf就被遮挡了。
回复 使用道具 举报
赛鼎设计院
金牌服务用户   /  发表于:2023-9-25 10:27:16
5#
Ellia.Duan 发表于 2023-9-22 16:20
您好,将您上传的file.ssjson导入到在线表格编辑器中,发现可以正常显示。

还有一个问题,我补充一下。这个ssjson不是靠工具生成的。可能生成的格式有问题。我是通过代码JSON.stringify(workbook.toJSON())这样生成的文件,然后再保存成ssjson格式的。你们如果转换错误的话,最好用JSON.prase解析一下,然后再做处理。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-9-25 11:40:19
6#
本帖最后由 Ellia.Duan 于 2023-9-25 12:14 编辑
赛鼎设计院 发表于 2023-9-25 10:25
我们不是通过ssjson导出的pdf。我们现在的方案是,先通过spreadjs生成excel,然后再把excel生成pdf。这块 ...

您好,和您确认一下问题,在SpreadJS中制作模板,将其导出为excel 。在GcExcel中导入excel 经过处理将其导出为pdf 。其中第一步在SpreadJS中导出的excel就出现了问题。
如果是上述问题的话,我已经复现了此问题。此贴将置为保留处理,将深入调研此问题。待有进展会及时通知您。

问题编号:SJS-20358
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-10-19 10:18:37
8#
您好,通过上述回复,是否可以解决您的问题呢?
回复 使用道具 举报
赛鼎设计院
金牌服务用户   /  发表于:2023-11-9 14:04:11
9#
Ellia.Duan 发表于 2023-10-19 10:18
您好,通过上述回复,是否可以解决您的问题呢?

没有解决。
回复 使用道具 举报
赛鼎设计院
金牌服务用户   /  发表于:2023-11-9 14:09:52
10#
Ellia.Duan 发表于 2023-10-19 10:18
您好,通过上述回复,是否可以解决您的问题呢?

我再次重新描述一下。经过这段时间,我发现这个问题应该是spreadjs在导出excel等时候产生的误差。大概率应该是这个包的@grapecity/spread-excelio的问题。下面是我们实现的代码。
  1. const serializationOption = {
  2.       saveAsView: true,
  3.       includeAutoMergedCells: true,
  4.     }
  5.     let json = workbook.toJSON(serializationOption)

  6.     let excelIo = new ExcelIO.IO()
  7.     // here is excel IO API
  8.     excelIo.save(
  9.       json,
  10.       async function (blob) {
  11.         console.log('excelIo', blob)
  12. saveAs(blob, fileName)
  13. })
复制代码
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部