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

标签 php excel phpexcel

客户从事制药行业。

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

文档的总体结构如下:

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/

相关文章:

php - 在 AJAX 请求中设置后 Cookie 不可用

php - 将 Smarty 模板输出写入静态 HTMl 文件

php - 为什么PHP crypt函数使用DES加密算法?

php - 没有滚动的jquery-css下拉图像列表

arrays - 使用数组并一一返回值

excel - 从 Excel 写入 Word Activex 文本框

vba - 使用 VBA 在 Word 中设置嵌套字段

php - 将mysql数据库导出到excel

php - 如何在 php laravel excel 中将工作表复制到另一个工作表?

php - 使用PHPExcel获取excel表数据的行数