2012-01-24 2 views
4

PHPExcel 클래스를 사용하여 ods 파일 (xls 및 xlsx는 괜찮음)을 읽는 동안 두 개의 셀이 함께 있고 동일한 데이터가 포함되어있는 경우 두 번째 셀은 공백이됩니다. 버그입니까? 여기에PHPExcel 함께 셀에 동일한 데이터 문제가 포함됨

<?php 
set_include_path(get_include_path() . PATH_SEPARATOR . '../../Librerias/phpexcel/Classes/'); 
include 'PHPExcel/IOFactory.php'; 

$input_fileName = dirname(__FILE__) . '/bug.ods'; 
$input_file_type = PHPExcel_IOFactory::identify($input_fileName); 
$reader = PHPExcel_IOFactory::createReader($input_file_type); 
$reader->setReadDataOnly(true); 
$objPHPExcel = $reader->load($input_fileName); 
$objPHPExcel->setActiveSheetIndex(0); 
$rowIterator = $objPHPExcel->getActiveSheet()->getRowIterator(); 

$array_data = array(); 
foreach($rowIterator as $row){ 
    $cellIterator = $row->getCellIterator(); 
    $cellIterator->setIterateOnlyExistingCells(false); 
    $rowIndex = $row->getRowIndex();  
    foreach ($cellIterator as $cell) { 
      $array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue(); 
    } 
} 
echo '<pre>' ; print_r($array_data); echo '</pre>' ; 

>

bug.ods

| A | B | C | D | E | F 
----------------------------------------------- 
1 | 1 | 1 | 2 | 2 | 3 | 3 
2 | 2 | 2 | 1 | 1 | 3 | 3 
3 | 3 | 3 | 1 | 1 | 2 | 2 
4 | a | a | b | b | c | c 
5 | b | b | a | a | c | c 
6 | c | c | a | a | b | b 

에 내용입니다 ... 그리고 여기에서 print_r 출력 : 여기 내 코드입니다.

Array 
(
    [1] => Array 
     (
      [A] => 1 
      [B] => 
      [C] => 2 
      [D] => 
      [E] => 3 
     ) 

    [2] => Array 
     (
      [A] => 2 
      [B] => 
      [C] => 1 
      [D] => 
      [E] => 3 
     ) 

    [3] => Array 
     (
      [A] => 3 
      [B] => 
      [C] => 1 
      [D] => 
      [E] => 2 
     ) 

    [4] => Array 
     (
      [A] => a 
      [B] => 
      [C] => b 
      [D] => 
      [E] => c 
     ) 

    [5] => Array 
     (
      [A] => b 
      [B] => 
      [C] => a 
      [D] => 
      [E] => c 
     ) 

    [6] => Array 
     (
      [A] => c 
      [B] => 
      [C] => a 
      [D] => 
      [E] => b 
     ) 

) 

내가 잘못 했나요? 그게 버그 야?

몇 가지 아이디어가 있습니까? PHPExcel 문제 추적기에

+0

존재 가치를 반복하면 당신은'두 개의 세포는 그들이 병합 된 셀이 있습니다 의미 together' 할 수 있습니다 말할 때? 왜냐하면 이것은 예상되는 행동이기 때문입니다. 셀이 병합되면 효과적으로 하나의 셀이되므로 하나의 값만 있습니다. 반환 된 구조는 테이블 레이아웃을 올바르게 유지하기 위해 빈 셀을 표시합니다. 두 번째 "셀"이 첫 번째 셀에 대한 참조 인 경우 틀림없이 더 좋을 것입니다.하지만 여전히 현명한 접근입니다 ... – DaveRandom

+0

영어로 죄송합니다 ... 다른 셀 옆에있는 한 셀, 병합하지 마라. 위의 예와 같습니다. –

답변

관련 문제