找回密码
 立即注册

QQ登录

只需一步,快速开始

qyc

初级会员

20

主题

84

帖子

270

积分

初级会员

积分
270
qyc
初级会员   /  发表于:2023-3-6 16:18  /   查看:2918  /  回复:11
10金币
本帖最后由 qyc 于 2023-3-6 16:23 编辑

GCExcel时 , 怎么获取最后一页的页脚 , 对页脚设置内容呢 , 如图最后一页我可能要在页脚上方加些内容 , 或者还有什么更好的方法能获得在转PDF之前 workbook最后一页最后的靠近页脚的位置设置数据呢? image.png505604247.png

其中主要就是页数不固定 , 内容也是不固定的 ,总之就是后台GCexcel 再将excel转pdf之前 能在最后一页的页脚处上方加内容

最佳答案

查看完整内容

这个找不到,因为有可能这个空白不在页面上,比如你的页面大概到50行就结束了,红框的位置大概在90行,那这个90行是不在页面中的。所以这个GcExcel是无法控制的。 但是GcExcel有一个功能可以获取每一页的pageContent,在其中可以单独为这一页设置专属的页眉与页脚。这个问题就可以给最后一页单独设置一个特殊的页脚,在页脚中加上你需要的信息即可。详情可以参考这个学习指南 https://en.onboarding.grapecitydev.com/documents- ...

11 个回复

倒序浏览
最佳答案
最佳答案
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-6 16:18:50
来自 6#
这个找不到,因为有可能这个空白不在页面上,比如你的页面大概到50行就结束了,红框的位置大概在90行,那这个90行是不在页面中的。所以这个GcExcel是无法控制的。
但是GcExcel有一个功能可以获取每一页的pageContent,在其中可以单独为这一页设置专属的页眉与页脚。这个问题就可以给最后一页单独设置一个特殊的页脚,在页脚中加上你需要的信息即可。详情可以参考这个学习指南
https://en.onboarding.grapecityd ... mos/custompageinfos
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-6 18:32:31
2#
您好,
您描述中“最后一页的页脚处上方加内容”,这里的 页脚处上方,是页脚部分,还是 sheet 内容部分呢?
如果是前者,目前GcExcel页眉页脚仅支持 常规、首页不同、奇偶不同这三种模式,仅对最后一页页脚设置不同目前暂不支持。
如果是后者,有个思路可以参考下:
您可以在导出pdf前,借助toJson/fromJson 复制一个新workbook,
遍历新workbook sheet,获取最后一个sheet 的预计分页位置(参考下方链接),计算出分页位置后,再在相应位置赋值。
https://demo.grapecity.com.cn/do ... etpaginationinfo%2C
因为赋值/导出pdf的是新workbook,所以原workbook不会受影响。
回复 使用道具 举报
qyc
初级会员   /  发表于:2023-3-6 18:44:39
3#
Lynn.Dou 发表于 2023-3-6 18:32
您好,
您描述中“最后一页的页脚处上方加内容”,这里的 页脚处上方,是页脚部分,还是 sheet 内容部分呢 ...

我是在pdf最后一页的底部加内容 , sheet页不行 , 内容一下如果都是空白 , sheet页获取不准确
回复 使用道具 举报
qyc
初级会员   /  发表于:2023-3-6 18:49:00
4#
qyc 发表于 2023-3-6 18:44
我是在pdf最后一页的底部加内容 , sheet页不行 , 内容一下如果都是空白 , sheet页获取不准确

这个方法还是不太明白 , 怎么定义到当前页最底下的位置呢
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-7 15:27:55
5#
可以参考一下这个代码

  1.                 IWorksheet sheet= workbook.getActiveSheet();
  2.                 PrintManager printManager = new PrintManager();
  3.             List<PageInfo> pages = printManager.paginate(sheet);
  4.                 for(PageInfo pageinfo : pages){
  5.                         //该页对应的range
  6.                         IRange range=pageinfo.getPageContent().getRange();
  7.                         //在这了就可以对该页对应的单元格区域做操作了,比如说对最后一行做操作修改
  8.                         IRange lastrow=sheet.getRange(range.getLastRow(), range.getColumn(),1,range.getColumnCount());
  9.                        
  10.                 }
复制代码
回复 使用道具 举报
qyc
初级会员   /  发表于:2023-3-8 17:34:53
7#
Clark.Pan 发表于 2023-3-7 16:07
这个找不到,因为有可能这个空白不在页面上,比如你的页面大概到50行就结束了,红框的位置大概在90行,那这 ...

好的我试试 , 那这个方法就能实现每页都能设置不同的页眉页脚了?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-8 17:38:08
8#
本帖最后由 Clark.Pan 于 2023-3-8 17:39 编辑

是的,在pages这个list中获取到对应的page对象,在其中单独设置即可。
回复 使用道具 举报
qyc
初级会员   /  发表于:2023-3-8 18:25:11
9#
本帖最后由 qyc 于 2023-3-8 18:30 编辑
Clark.Pan 发表于 2023-3-8 17:38
是的,在pages这个list中获取到对应的page对象,在其中单独设置即可。

image.png623644103.png image.png304480284.png
我现在有又遇到个问题 , 我前端和转PDF的时候 , 这一个sheet页从第三页开始算的 , 就一页 ,   但在后台获取页数的时候 得到的是2页
  1. IWorksheet resultSheet = workbook.getWorksheets().get("证书结果页");
  2.             PrintManager printManager = new PrintManager();
  3.             List<PageInfo> pages = printManager.paginate(resultSheet);
  4.             int pageSize = pages.size();  //这里得到的值是2
复制代码


回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-9 09:50:59
10#
这个对应的ssjson能发一下吗,这个需要具体看一下是什么内容影响了这里
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部