Чтение пустых ячеек как ячеек данных

Я читаю файл Excel, где иногда кодекс PHPExcel рассматривает пустую ячейку как ячейку значения. Например:

Если в моем Excel 128 столбцов, максимальный размер DV иногда будет варьироваться в зависимости от требований Excel и пользователей. Максимум 126 столбцов. Минимум 8 столбцов. А также максимальный ряд 250.

----------------------
A | B | ..... |DU |DV|
----------------------

Я использовал следующий код для загрузки Excel:

   set_include_path(get_include_path() . PATH_SEPARATOR . 'Classes/');
include 'PHPExcel/IOFactory.php';

$inputFileName = $target_file;
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}

Теперь проблема в том, что PHPExcel показывает неправильный максимальный столбец и строки, максимальный столбец 126 (DV) и максимальный ряд 245.

Но когда я использовал этот следующий код, я получаю неправильные значения:

 $lastColumn =  $objPHPExcel->setActiveSheetIndex(0)->getHighestColumn();
$lastRow    =  $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();

вместо 126 я получаю 1800+ (АМК) как максимальный столбец и максимальная строка, отображаемая как 65536.

Как исправить эту проблему?

Даже очистка и создание нового Excel это иногда происходит.

Как установить максимальный столбец и строки перед чтением (загрузкой) Excel или как избежать пустых ячеек?

0

Решение

Строки и столбцы считаются getHighestColumn() а также getHighestRow() если они содержат что-либо (включая стиль или информацию для печати), а не просто содержание. Эти значения также рассчитываются при загрузке электронной таблицы, поэтому могут быть неточными, если впоследствии вы добавите новые строки или столбцы на лист.

Вместо этого используйте getHighestDataColumn() а также getHighestDataRow() методы, чтобы вернуть самую высокую строку и столбец, которые на самом деле содержат значения данных в ячейках. Хотя они менее эффективны, они фактически вычисляют наивысшую ссылку на ячейку при вызове, которая медленнее, но всегда точна.

Также обратите внимание, что ячейка, которая может показаться вам пустой, может по-прежнему содержать нулевую или пустую строку. Это все еще значение данных.

1

Другие решения

Других решений пока нет …