2013-07-26 6 views
0

2 차원 배열을 .xls 파일로 저장하고 싶습니다.배열을 xls 파일로 저장하십시오.

$arr = array(
    array("01", "02", "03"), 
    array("001", "02", "03"), 
    array("00001", "02", "03"), 
); 


// include PHPExcel library 

$objPHPExcel = new PHPExcel(); 
$objPHPExcel->getActiveSheet()->fromArray($arr); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save("file.xls"); 

이 대신 0100001로 저장됩니다 사용하는 경우 :

...... 
$objPHPExcel->getActiveSheet()->fromArray($arr); 
$objPHPExcel->getActiveSheet()->getStyle('A1:C3')->getNumberFormat()->setFormatCode("00000"); 
..... 

가 어떻게이 문제를 해결할 수있는 사용이 코드를하면 데이터가 선행 0없이 저장됩니다? 내 배열의 원본 데이터를 .xls 파일에 올바르게 저장하려면 어떻게합니까?

+0

요소를'strlen()'하는 것이 가능하고'str_repeat()'을 사용하여 형식을 설정합니까? – SmokeyPHP

+0

@ SmokeyPHP --- 주기적으로 작성해야합니까? 배열 할 각 요소에 대해? – RIKI

답변

1

대신 텍스트 형식으로 세포를 설정해보십시오 : 문자열의 길이 (->setFormatCode(str_repeat('0', strlen($arrElem));에 따라 배열을

$objPHPExcel->getActiveSheet()->getStyle('A1:C3')->getNumberFormat()->setFormatCode('@'); 

또는 루프 형식을 설정, 그러나 그것은 이상 반복만큼 어리석은 것 도

$objPHPExcel->->getCell('A1')->setValueExplicit($arr[0][0], PHPExcel_Cell_DataType::TYPE_STRING); 

여기에 무딘 접근을위한 경우가있을 수 있습니다 : 배열, 명시 적으로 각 값을 설정

$objPHPExcel->getDefaultStyle() 
      ->getNumberFormat() 
      ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); 

기본 형식을 txt로 설정해야합니다.

스모키 (그리고 제가 제안한)는 반복 할 때마다 숫자 형식을 사용하고있었습니다.

$col = range('A','C'); 
$cell = ''; 
foreach($arr as $colIndex => $vals) 
{ 
    $cell = $col[$colIndex];//the first array will be $col[0] === A 
    foreach($vals as $row => $val) 
    { 
     $cell .= $row +1;//A.(0+1) -->A1 
     $objPHPExcel->getCell($cell) 
        ->getNumberFormat() 
        ->setFormatCode(str_repeat('0', strlen($val))); 
        //for 001, this is str_repeat('0',3) or '000' 
    } 
} 

올바른 선행 0을 추가하기 위해 그에 따라 셀을 포맷합니다. 다른 모든 것이 실패하면, 이것은 올바른 형식을 설정하는 꽤 좋은 방법입니다.

+0

'셀을 텍스트 형식으로 설정해보십시오 .' --- 어떻게 만드는지 말해주십시오. – RIKI

+0

@OTARIKI : 글쎄, 내 첫 번째 스 니펫 :'setFormatCode ('@')'이 그렇게해야하지만 기본 스타일을 텍스트 형식으로 설정할 수도있다. (편집시 코드 추가) –

+0

@OTARIKI : 수동 접근법 ('$ arr'의 문자열에 따라 숫자 형식 셀을 셀 단위로 설정). –

관련 문제