【问题标题】:PHPExcel getHighestDataRow() is not working with .xlsx filePHPExcel getHighestDataRow() 不适用于 .xlsx 文件
【发布时间】:2015-06-05 10:29:14
【问题描述】:

我正在尝试获取包含 Excel 工作簿中数据的最后一行。 我使用了 getHighestDataRow() 函数,就像我从互联网上获得的其他建议一样。但它仅适用于 .xls 文件。 当我将文件保存为 .xlsx 格式时,函数返回错误的值 以下是我的代码:

$inputFileType = PHPExcel_IOFactory::identify($file);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(true);
$objReader->setLoadSheetsOnly(0);
$objPHPExcel = $objReader->load($file);
$sheet = $objPHPExcel->getSheet(0);     

$highestRow = $sheet->getHighestDataRow();
$highestColumn = $sheet->getHighestDataColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);     

我一直在寻找这个问题几个小时,但仍然找不到答案。

【问题讨论】:

  • 模糊和无意义的问题....您的代码没有显示与您的问题相关的任何内容,您没有给出任何预期和实际结果的指示

标签: php phpexcel phpexcelreader


【解决方案1】:

getHighestDataRow() 方法不关心 PHPExcel 对象及其工作表是从文件加载的,还是使用 new.... 创建的。如果从文件加载,它不知道是否是 xls 文件或者一个 xlsx 文件被用来创建 PHPExcel 对象......所以你错了。该调用适用于单元格集合,而不是以任何方式适用于文件或文件类型。

您使用$sheet->getHighestDataRow()发布的代码也不是使用$sheet->getHighestRow()

【讨论】:

  • 我认为这不是一个正确的答案。即使问题没有正确制定,其他人的问题仍然存在,而试图获得最后一行却没有这样做。我们应该如何计算 Excel 工作表中的行数,让我们说...... 1000 行中的验证,但只有 4 行具有真实内容??
  • @AndoitzJordán 如果getHighestDataRow() 没有返回您期望的行,那是因为它仍然认为具有不可见内容的单元格(空字符串或 null 仍然是 Excel 单元格的有效数据内容,即使尽管您在该单元格中看不到任何内容,或者为该单元格设置了验证)作为单元格。如果您只想计算您认为不为空的单元格,那么您必须根据自己对空的定义编写自己的逻辑
  • 我正在使用最新版本的 PHPExcel,但 getHighestDataRow() 在 getHighestRow() 工作时似乎根本不存在。这是我的代码: $sheet = $excel->setActiveSheetIndex(0); $highestRow = $sheet->getHighestDataRow();
  • It doesn't look undefined to me 你遇到了什么错误?
猜你喜欢
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
相关资源
最近更新 更多