2012-03-14 22 views
14

Sto costruendo un plug-in WordPress usando PHPExcel per esportare i rapporti di frequenza degli studenti. Finora, sono in grado di prendere con successo la serie di dati degli studenti (inclusa la partecipazione) e convertirli e scaricarli come foglio di calcolo. Sfortunatamente, c'è un bug strano: quando uno studente ha partecipato a zero eventi, quella cella sul foglio di calcolo è vuota invece di mostrare uno zero. Preferirei che uscisse con uno zero reale, ma non riesco a trovare un modo per farlo. Ecco il mio script:PHPExcel che emette gli zeri come celle vuote

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'); 

} 

$ data contiene l'array di informazioni degli studenti, che è strutturato in questo modo:

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 
    ) 
. 
. 
. 
) 

Come si può vedere è i dati di esempio, i gli studenti hanno ciascuno frequentato 1 vetrina , ma zero seminari. Quando questo foglio di calcolo viene scaricato e aperto in Excel, 1 mostra bene, ma le celle del seminario sono vuote. Dal momento che sto usando la funzione fromArray() per popolare il foglio di calcolo, c'è qualcosa che dovrei fare per fare in modo che quegli zeri appaiano correttamente?

risposta

24

penso che tu sia una vittima di confronti loosely-digitato qui - è stato specificato null come secondo parametro a fromArray(), che rappresenta il Value in source array that stands for blank cell. Poiché null == 0 ciò significa che zero determinerà una cella vuota a meno che non si imposti il ​​quarto argomento su true.

provare a cambiare:

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

... al ...

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

Grazie Dave! Sapevo che era qualcosa di semplice, non riuscivo a dargli la caccia. Grazie, grazie, grazie! – Slushman

+0

Non sono riuscito a trovarlo da nessuna parte sul sito, ma una ricerca di 1 secondo su Google ha prodotto questa domanda come primo risultato. Non sono sicuro che sia più una buona cosa per StackOverflow o una cosa negativa per la documentazione di PHPExcel. – trysis

+0

@DaveRandom questo non funziona per me. Sto usando 'phpexcel' 1.8. – Valay

Problemi correlati