2012-03-14 3 views
14

나는 학생 출석 보고서를 내보내려면 PHPExcel을 사용하여 WordPress 플러그인을 구축하고 있습니다. 지금까지 학생 데이터 (출석 포함)를 성공적으로 가져 와서 스프레드 시트로 변환하여 다운로드 할 수있었습니다. 불행히도, 이상한 버그가 있습니다. 학생이 제로 이벤트에 참석했을 때, 스프레드 시트의 셀은 0을 표시하는 대신 비어 있습니다. 나는 그것이 실제 제로로 나오길 바란다. 그러나 나는 그것을 할 길을 찾을 수 없다.빈 셀로 0을 출력하는 PHPExcel

error_reporting(E_ALL); 
ini_set('include_path', ini_get('include_path').';../Classes/'); 

include 'PHPExcel.php'; 
include 'PHPExcel/Writer/Excel2007.php'; 

$objPHPExcel = new PHPExcel(); 

$objPHPExcel->setActiveSheetIndex(0); 
$objPHPExcel->getProperties()->setCreator($user); 
$objPHPExcel->getProperties()->setLastModifiedBy($user); 
$objPHPExcel->getProperties()->setTitle($title); 
$objPHPExcel->getProperties()->setSubject($title); 
$objPHPExcel->getProperties()->setDescription($title); 
$objPHPExcel->getActiveSheet()->fromArray($data, null, 'A1'); 
$objPHPExcel->getActiveSheet()->getStyle('A1:H1')->getFont()->setBold(true); 

$columns = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'); 

foreach ($columns as $column) { 

    $objPHPExcel->getActiveSheet()->getColumnDimension($column)->setAutoSize(true); 

} // End $columns foreach 

$file_name = str_replace(' ', '_', $title); 

if ($_POST['type'] == 'spreadsheet') { 

header('Content-type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment; filename="' . $file_name . '.xls"'); 

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
$objWriter->save('php://output'); 

} 

$ 데이터는 다음과 같이 구성되어 학생 정보의 배열을 포함합니다 : 여기 내 스크립트의 당신이 볼 수 있듯이

Array (
    [0] => Array (
     [0] => First Name 
     [1] => Last Name 
     [2] => BU ID 
     [3] => Barcode 
     [4] => Major 
     [5] => Class 
     [6] => Seminars 
     [7] => Showcases 
    ) 

    [1] => Array (
     [first_name] => Seth 
     [last_name] => Abel 
     [buid] => B00385307 
     [barcode] => 100324707 
     [student_major] => CMM 
     [class] => MBU2100 
     [seminar] => 0 
     [showcase] => 1 
    ) 

    [2] => Array (
     [first_name] => Zachary 
     [last_name] => Abend 
     [buid] => B00373103 
     [barcode] => 100291996 
     [student_major] => MBU 
     [class] => MBU2100 
     [seminar] => 0 
     [showcase] => 1 
    ) 
. 
. 
. 
) 

이 예제 데이터의 학생들이 각 1 쇼케이스에 참석 한 , 그러나 제로 세미나. 이 스프레드 시트를 Excel에서 다운로드하여 열면 1은 정상적으로 표시되지만 세미나 셀은 비어 있습니다. 스프레드 시트를 채우기 위해 fromArray() 함수를 사용하고 있으므로이 0이 제대로 표시되도록해야합니까?

답변

24

여기서는 느슨한 유형 비교의 피해자라고 생각합니다. nullfromArray()에 대한 두 번째 매개 변수로 지정했습니다.이 값은 Value in source array that stands for blank cell입니다. null == 0 이후로 이것은 네 번째 인수를 true으로 설정하지 않으면 0이 빈 셀이된다는 것을 의미합니다.

시도의 변화 :

$objPHPExcel->getActiveSheet()->fromArray($data, null, 'A1'); 

...에 ...

$objPHPExcel->getActiveSheet()->fromArray($data, null, 'A1', true); 
+0

감사 데이브! 나는 그것이 단순한 무엇인가 알고 있었다, 나는 단지 그것을 사냥 할 수 없었다. 고마워, 고마워, 고마워! – Slushman

+0

사이트에서이 위치를 찾을 수 없었지만 Google에서 1 초 검색으로이 질문이 첫 번째 결과로 나왔습니다. StackOverflow에서 더 좋은 점인지 아니면 PHPExcel의 설명서에서 잘못된 점인지는 잘 모르겠습니다. – trysis

+0

@DaveRandom 이것은 나를 위해 작동하지 않습니다. 나는'phpexcel' 1.8을 사용하고 있습니다. – Valay