客户从事制药行业。
我们为客户购买的商品打印账单。
文档的总体结构如下:
Header
List of items
Footer
当所有项目列表适合 N 页时,有时会发生这种情况。
在这种情况下,页脚将移至最后一页。
本地法律禁止此类文件,即页脚不能单独存在。它需要至少包含一个已售仓位。
关于实现的想法:
如果我能在调用setCellValue或fromArray等操作时获取当前页面,那么实现起来就很容易了。
在这种情况下,我可以检查还有多少行以及是否在新页面上。 如果我在新页面上并且有零个项目,那么我会在最后一个位置之前添加空行。
我觉得由于 Excel 的工作方式根本不可能进入 phpexcel。
目前我脑子里只有一个肮脏的解决方案: 根据用户请求创建文档 -> 存储在服务器上临时文件夹的某个位置 -> 读取它并检查文档是否有最后一页没有项目,如果是这种情况,我将添加空位置并再次重新创建文档(某种深度有限的递归。)
但是这个解决方案太困惑了。有没有更好的方法来处理这样的问题?
最佳答案
实际上,如果您希望打印的格式是固定的(例如字体类型和大小、标题格式、纸张大小等),那么您可以检查有多少行:
$objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
//if 0 is the sheet you are working on
您可以检查将页脚
推送到新页面需要多少行。基本上有一个公式适合您:
$footerWillBeOnSeparateSheet = $allRowCount % $maximumRowPerPage === $nomberOfRowsWhenFooterGetsOnTheNextPage;
如果 $footerWillBeOnSeparateSheet
为 true,那么您需要添加您提到的空行。
我会使用不同的方法,而不是添加空行。如果 $footerWillBeOnSeparateSheet
的值为 true,请尝试将最后两项和页脚分隔到不同的页面中。
编辑:使用getRowHeight()
也是一种选择,尽管很难保持不同模板的差异。
关于PHPExcel - 在文档创建期间获取当前页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44720241/