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