2012-03-14 13 views
14

Öğrenci katılım raporları vermek için PHPExcel kullanarak bir WordPress eklentisi yapıyorum. Şimdiye kadar, öğrenci verilerini (katılım dahil) dizisini başarılı bir şekilde alabiliyorum ve bir elektronik tablo olarak dönüştürüp indirebiliyorum. Maalesef, tuhaf bir hata var: Bir öğrenci sıfır etkinliğe katıldıysa, e-tablodaki bu hücre sıfır gösterme yerine boştur. Gerçek bir sıfır ile çıkmayı tercih ederim, ama bunu yapmanın bir yolunu bulamıyorum.PHPExcel boş hücreler olarak sıfırlar çıktı

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

} 

$ verileri bu gibi yapılandırılmıştır öğrenci bilgileri, dizi içerir: İşte benim senaryo Gördüğünüz gibi

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

olan örnek veriler, bu öğrencilerin her biri 1 vitrini katılmıştır ama sıfır seminerler. Bu elektronik tablo Excel'de indirildiğinde ve açıldığında, 1 iyi görünür, ancak seminer hücreleri boştur. E-tabloyu doldurmak için fromArray() işlevini kullandığım için, bu sıfırları düzgün şekilde göstermek için yapmam gereken bir şey var mı?

cevap

24

Sanırım bu yazılan yazılan karşılaştırmaların kurbanı oldunuz - Value in source array that stands for blank cell'u temsil eden fromArray() için ikinci parametreniz olarak null belirttiniz. null == 0'dan beri, dördüncü bağımsız değişkeni true olarak ayarlamadığınız sürece sıfırın boş bir hücre ile sonuçlanacağı anlamına gelir.

deneyin değişen:

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

... için ...

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

Teşekkürler Dave! Basit bir şey olduğunu biliyordum, sadece onu avlayamadım. Teşekkürler teşekkürler teşekkürler! – Slushman

+0

Bunu sitede hiçbir yerde bulamadım, ancak Google'da 1 saniyelik bir arama, bu soruyla 1. sonuç olarak geldi. StackOverflow için iyi bir şey mi yoksa PHPExcel'in belgeleri için kötü bir şey mi, emin değilim. – trysis

+0

@DaveRandom bu benim için çalışmıyor. Ben phpexcel '1.8 kullanıyorum. – Valay