Я читаю файл 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 или как избежать пустых ячеек?
Строки и столбцы считаются getHighestColumn()
а также getHighestRow()
если они содержат что-либо (включая стиль или информацию для печати), а не просто содержание. Эти значения также рассчитываются при загрузке электронной таблицы, поэтому могут быть неточными, если впоследствии вы добавите новые строки или столбцы на лист.
Вместо этого используйте getHighestDataColumn()
а также getHighestDataRow()
методы, чтобы вернуть самую высокую строку и столбец, которые на самом деле содержат значения данных в ячейках. Хотя они менее эффективны, они фактически вычисляют наивысшую ссылку на ячейку при вызове, которая медленнее, но всегда точна.
Также обратите внимание, что ячейка, которая может показаться вам пустой, может по-прежнему содержать нулевую или пустую строку. Это все еще значение данных.
Других решений пока нет …