请选择 进入手机版 | 继续访问电脑版

miaoyj

注册会员

7

主题

18

帖子

79

积分

注册会员

积分
79
miaoyj
注册会员   /  发表于:2026-1-6 10:32  /   查看:71  /  回复:11
1金币
本帖最后由 Matthew.Xue 于 2026-1-13 11:15 编辑


调研编号:GCNSJS-28171

需求:不同的模板页脚是不同的
当前做法:在设计器中分别对模板设置不同的页脚,打印预览是有页脚的,参考(打印设置 < 打印 < 设计器组件 | 葡萄城 SpreadJS 表格控件在线文档),const objJson = spreadRef.toJSON({ includeBindingSource: true })调用GcExcel的导出pdf

问题:GcExcel的导出pdf没有包含页脚内容

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

最佳答案

查看完整内容

您好,经过研发调研后,发现是print包没有引入,在失败的包里面,import print包就可以了:

11 个回复

最佳答案
最佳答案
Matthew.Xue
超级版主   /  发表于:2026-1-6 10:32:37
来自 10#
您好,经过研发调研后,发现是print包没有引入,在失败的包里面,import print包就可以了:

本帖子中包含更多资源

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

x
回复 使用道具 举报
miaoyj
注册会员   /  发表于:2026-1-6 11:18:01
2#
本帖最后由 miaoyj 于 2026-1-6 11:20 编辑

定位发现这里的打印json内容是有页脚内容的
  1. const recordExcelJson = JSON.parse(record.excelJson)
  2. console.log('1:', recordExcelJson)
复制代码


经过载入再输出json就没有页脚内容了
  1. let copySpread = new GC.Spread.Sheets.Workbook()
  2. copySpread.fromJSON(recordExcelJson)
  3. console.log('2:', copySpread.toJSON())
复制代码


完整代码
  1. spreadRef.removeSheet(0)
  2.       for (let i = 0; i < dataSources.length; i++) {
  3.         const record = dataSources[i]
  4.         const data = dataSources[i].data
  5.         const dataTest = data.test
  6.         const testNo = dataTest.testNo
  7.         const ordTaskId = dataTest.ordTaskId
  8.         const recordExcelJson = JSON.parse(record.excelJson)
  9.         console.log('1:', recordExcelJson)

  10.         let copySpread = new GC.Spread.Sheets.Workbook()
  11.         copySpread.fromJSON(recordExcelJson)
  12.         console.log('2:', copySpread.toJSON())
  13.         
  14.         
  15.         let copySheet = new GC.Spread.Sheets.Worksheet(testNo)
  16.         copySheet.fromJSON(copySpread.getSheet(0).toJSON())
  17.         copySheet.name(testNo)
  18.         copySheet.tag(ordTaskId)
  19.         let namedStyles = copySpread.getNamedStyles()
  20.         for (let i = 0; i < namedStyles.length; i++) {
  21.           copySheet.addNamedStyle(namedStyles[i])
  22.         }
  23.         spreadRef.addSheet(spreadRef.getSheetCount(), copySheet)
  24.         let source = new GC.Spread.Sheets.Bindings.CellBindingSource(data)
  25.         copySheet.autoGenerateColumns = false
  26.         copySheet.setDataSource(source)

  27. }
复制代码
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2026-1-6 16:13:47
3#
您好,我这边用SpreadJS 18.2.2以及GcExcel 8.2.3测试了,并没有复现您提到的问题,我的步骤如下:
1. 在SpreadJS的设计器中,设置页眉页脚,并导出为ssjson文件

2. 在GcExcel中打开这个ssjson,直接保存为pdf
  1. IWorkbook workbook = new Workbook();
  2. workbook.open("t.ssjson");
  3. workbook.save("ttt.pdf");
复制代码
结果如下:


可以看到,页眉页脚正常显示了。
不知道您说的GcExcel导出pdf的部分,在GcExcel代码端具体是怎么做的?

本帖子中包含更多资源

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

x
回复 使用道具 举报
miaoyj
注册会员   /  发表于:2026-1-6 16:28:03
4#
我已经定位到问题所在了,二楼的回复中有完整的代码
关键的代码如下

输出的JSON对象recordExcelJson包含key:printInfo
  1. const recordExcelJson = JSON.parse(record.excelJson)
  2. console.log('recordExcelJson:', recordExcelJson)
复制代码


输出的JSON对象copySpread丢失了key:printInfo
  1. let copySpread = new GC.Spread.Sheets.Workbook()
  2. copySpread.fromJSON(recordExcelJson)
  3. console.log('copySpread:', copySpread.toJSON())
复制代码

回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2026-1-6 16:30:37
5#
miaoyj 发表于 2026-1-6 16:28
我已经定位到问题所在了,二楼的回复中有完整的代码
关键的代码如下

刚才忘记说了,有可能是您使用vue3的时候,使用了代理变量导致了此问题,您可以将spreadRef变量改为一个raw变量试试能不能解决,参考此帖子中的markRaw部分:
https://gcdn.grapecity.com.cn/showtopic-226752-1-12.html
回复 使用道具 举报
miaoyj
注册会员   /  发表于:2026-1-6 17:16:05
6#
改用markRaw,还是不行
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2026-1-7 09:07:00
7#
miaoyj 发表于 2026-1-6 17:16
改用markRaw,还是不行

是否可以上传一个可复现的demo,我们基于demo讨论?我本地测试后无法复现您说的现象,fromjson后printinfo中的页眉页脚信息仍然存在的
回复 使用道具 举报
miaoyj
注册会员   /  发表于:3 天前
8#
my-first-demo项目,访问http://localhost:5173/#/QuickStart,控制台可以输出合并后的sheet的printInfo

yudao-ui-admin-vue3项目,访问http://localhost:82/spreadjs,控制台输出合并后的sheet的printInfo是undefined
两个项目的页面的代码完全一致

本帖子中包含更多资源

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

x
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:前天 10:59
9#
您好,问题已复现,正在调研中,请耐心等待,有进展我会第一时间和您在帖子中同步
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部