PHPExcel - 在文档创建期间获取当前页面

时间:2017-06-23 11:22:29

标签: php excel phpexcel

客户在制药行业工作。

我们为客户购买的商品打印账单。

文件的一般结构如下:

Header
List of items
Footer 

当所有项目列表都符合N个页面时,有时会出现这种情况。

在这种情况下,页脚将移至最后一页。

当地法律禁止此类文件,即脚本不能单独使用。它需要包含至少一个售出位置。

关于实施的想法:

如果我可以在setCellValue或fromArray等调用操作期间获取当前页面,那么实现它会很容易。

在这种情况下,我可以检查我还有多少行,如果我在新页面上。 如果我在新页面上并且没有项目,那么我会在最后一个位置之前添加空行。

我觉得因为Excel的工作方式而无法进入phpexcel。

至于现在我在脑海中只有一个肮脏的解决方案:   根据用户请求创建文档   - >存储在某个地方的服务器上的临时文件夹 - >读取它并检查文档是否有没有项目的最后一页,如果是这种情况,我会添加空位置并再次重新创建文档(某种类型的递归,深度有限。)

但这太麻烦了解决方案。有没有更好的方法来处理这样的问题?

1 个答案:

答案 0 :(得分:2)

实际上,如果格式是固定的,你希望打印(如字体类型和大小,标题格式,纸张大小等),那么你可以检查有多少行:

$objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
//if 0 is the sheet you are working on

您可以查看将footer推送到新页面所需的行数。基本上你有一个公式:

$footerWillBeOnSeparateSheet = $allRowCount % $maximumRowPerPage === $nomberOfRowsWhenFooterGetsOnTheNextPage;

如果$footerWillBeOnSeparateSheet为真,那么您需要添加您提到的空行。

我使用不同的方法而不是添加空行。如果$footerWillBeOnSeparateSheet的值为true,请尝试将最后两个项目和页脚分隔为不同的页面。

使用getRowHeight()

编辑: 也是一种选择,但很难保持不同模板的差异。