2012-06-19 3 views
5

Я несколько озадачен поведением PHPExcel с некоторыми файлами, которые у меня есть. Файлы содержат ок. 3000 строк данных, но, согласно PHPExcel, последняя используемая строка - 65535. Я пробовал и вырезал несколько строк из файла и вставлял их в новый файл, но безрезультатно. Неважно, является ли формат Excel5 или Excel2007, всегда тот же результат.PHPExcel - читает прошлую строчку

Любые идеи, чтобы найти здесь ошибку?

КОД:

$cr=$xls->getActiveSheet()->getHighestRow(); 
    $cn=PHPExcel_Cell::columnIndexFromString($xls->getActiveSheet()->getHighestColum‌​n()); 
    for ($z=2; $z<=$cr; $z++) { 
     $class=($z%2)?"odd":"even"; 
?> 
    <tr class="<?php echo $class; ?>"> 
    <?php for ($s=0; $s<$cn; $s++) { 
     $tmp=$xls->getActiveSheet()->getCellByColumnAndRow($s,$z)->getValue();?> 
     <td><?php echo $tmp; ?></td> 
    <?php } ?> </tr> 
<?php } ?> 
+0

Можете ли вы показать свой код для чтения строки? –

+0

$ cr = $ xls-> getActiveSheet() -> getHighestRow(); $ Сп = PHPExcel_Cell :: columnIndexFromString ($ xls-> getActiveSheet() -> getHighestColumn()); for ($ z = 2; $ z <= $ cr; $ z ++) { $ class = ($ z% 2)? "Odd": "even"; ?> getActiveSheet() -> getCellByColumnAndRow ($ s, $ г) -> GetValue(); ?> user1465889

+0

Вы можете изменить свой ответ и написать код. Смотрите: http://stackoverflow.com/editing-help –

ответ

-1

Это не ошибка. В «пустой» таблице все еще содержится много пустых ячеек. Обычно Excel имеет 65536 строк и 256 coloumns.

+2

Но тогда все файлы должны показывать это поведение - у меня есть несколько других файлов, которые заканчиваются там, где я ожидаю, что они закончатся - последней строкой, в которую были введены данные. – user1465889

+0

Хммм ... попробуйте экспортировать в cvs, а затем обратно в формат excel. –

1
$objPHPExcel->setActiveSheetIndex(0)->getHighestRow(); 

или

$objPHPExcel->setActiveSheetIndex(0)->calculateWorksheetDimension(); 

, который возвращает диапазон в виде строки, как A1: AC2048

хотя завершающие пустые строки и столбцы включены в них.

или вы можете использовать итераторы для прокрутки существующих строк и столбцов, чтобы получить каждую ячейку в пределах используемого диапазона рабочих таблиц. См. /Tests/28iterator.php в производственном распределении для примера. Итераторы могут быть установлены так, чтобы игнорировать пробелы.

Источник:

How to find out how many rows and columns to read from an Excel file with PHPExcel?

+0

Я использую getHighestRow(), и я получаю 65535 для некоторых файлов и правильную последнюю строку для других, без отвратительного шаблона. – user1465889

5

Все это занимает пустая ячейка, и последний столбец/строка может быть намного выше, чем вы ожидаете. Даже макет печати или стили могут фальсифицировать сохраненные наивысшие значения. Откройте файл в MS Excel и нажмите Ctrl-End, и он перенесет вас в последнюю ячейку, которую распознает Excel.

В дополнение к getHighestRow() и getHighestColum() существует также (более медленный) метод getHighestDataRow() и getHighestDataColumn(), который идентифицирует самую высокую строку и столбец, которые фактически содержат данные ячейки.

+0

Спасибо за подсказку; loadingg и savin в OpenOffice тоже помогли. – user1465889

0

Марк Бейкер прав. Поэтому я исправил проблему на своем конце, выполнив следующие шаги:

  1. do ctrl + end из первой пустой ячейки после последней строки, которая имеет данные. , например. поэтому, если у меня последняя строка данных, это от A3 до D3. Я сделаю ctrl_end в ячейке A4

    • Это позволит выделить вам количество пустых строк
  2. правой кнопкой мыши на выбранные строки (строки, выбранные следующий первый шаг) и выберите «Удалить».

  3. он откроется всплывающее окно. выберите «Всю строку» и нажмите кнопку ОК

Так независимо от вашего кода, вы должны загрузить данные Excel, он читает только те строки, которые имеют данные.

Смежные вопросы