2013-04-30 2 views
1

В этом следующем скрипте я получаю сообщение об ошибке, что первые 4 строки пустые, хотя я использую this spreadsheet, который содержит данные.PHPExcel обрабатывает первые строки как пустые, хотя они содержат данные

Пожалуйста, посмотрите и предложить то, что может быть проблема:

$objPHPExcel = PHPExcel_IOFactory::load($path); 
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0); 

    $highestRow = $objWorksheet->getHighestRow(); 
    $highestColumn = $objWorksheet->getHighestColumn(); 
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 
    $nrColumns = ord($highestColumn) - 64; 
    $addedtags=0; 
    $begin_row=2; // 1st line of data in excel file 

    for ($row = $begin_row; $row <= $highestRow; $row++) { 
     $val=array(); 
     for ($col=0; $col < $highestColumnIndex; $col++) { 
      $cell = $objWorksheet->getCellByColumnAndRow($col, $row); 
      $val[] = $cell->getValue(); 
     } 

     if ($val[0]<>'') { //check that row contains data before inserting 
      $sql1 = sprintf("INSERT INTO ".$dbprefix."terms (name , slug, term_group) VALUES (%s, %s, %s)", 
       GetSQLValueString($val[0], "text"), 
       GetSQLValueString($val[1], "text"), 
       GetSQLValueString(0, "int")); 
      $result = mysql_query($sql1) or die(mysql_error()); 
      echo '<br />Added: '.$val[0]; 
     } else { 
      echo '<br />Error: Line '.$row.' was empty...'; 
     } 
    } 

Я использую PHPExcel версии 1.7.6.

+0

У вас есть пробелы перед текстом в значениях столбца/строки? т.е. 'column1'. – EnigmaRM

+0

Нет, не знаю. Эта ошибка возникает с любой электронной таблицей, с которой я тестирую ее. – bikey77

+0

Мне нужно было бы увидеть фактический файл электронной таблицы, чтобы проверить - какой тип файла это? –

ответ

0

Попробуйте изменить $begin_row переменную от 2 до 1:

$highestRow = $objWorksheet->getHighestRow(); 
$highestColumn = $objWorksheet->getHighestColumn(); 
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 
$nrColumns = ord($highestColumn) - 64; 
$addedtags=0; 
$begin_row=1; // 1st line of data in excel file 

Это пример, где они используют $row=1

http://phpexcel.codeplex.com/discussions/393113

0

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

$begin_row = 0; // 1st line of data in excel file 

затем $ col < = $ высшая точкаColumnIndex;

for ($row = $begin_row; $row <= $highestRow; $row++) { 
    $val=array(); 
    for ($col=0; $col <= $highestColumnIndex; $col++) { 
     $cell = $objWorksheet->getCellByColumnAndRow($col, $row); 
     $val[] = $cell->getValue(); 
    } 
0

Только для записи, если кто-то натыкается с той же проблемой:

Я наблюдал точно Описанное поведение, когда я случайно не прошел путь файл Excel для \PHPExcel_IOFactory::load(), но каталог дорожка. Итак, если вы случайно получаете неиспользуемое значение при вызове getHighestRow(), выполните двойную проверку, если путь действительно правильный.

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