2012-03-14 18 views
14

私はPHPExcelを使用してワードプレスプラグインを構築し、学生の出席レポートをエクスポートします。これまでのところ、学生データ(出席を含む)の配列をスプレッドシートとして変換してダウンロードすることができました。残念ながら、奇妙なバグがあります。学生がゼロイベントに出席したとき、スプレッドシートのセルはゼロを表示する代わりに空白になります。私はそれが実際のゼロで出てくることを好むだろうが、私はそれを行う方法を見つけることができません。ここに私のスクリプトです:あなたが見ることができるように空白セルとしてゼロを出力するPHPExcel

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つのショーケースに参加しています

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

} 

$データは次のように構成されている学生の情報の配列が含まれていますセミナーはゼロとなりました。このスプレッドシートをダウンロードしてExcelで開くと、1は正常に表示されますが、セミナーセルは空白です。私はfromArray()関数を使用してスプレッドシートに値を設定しているので、これらのゼロが正しく表示されるようにする必要がありますか?

答えて

24

ここでは、曖昧な型の比較の犠牲者だと思います。nullfromArray()の2番目のパラメータとして指定しました。これはValue in source array that stands for blank cellを表します。 null == 0以降、これは、第4引数をtrueに設定しない限り、空白セルがゼロになることを意味します。

は変更してみてください:

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

... ...

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

おかげデイブに!私はそれが何か単純であることを知っていた、私はちょうどそれを狩ることができなかった。ありがとう、ありがとう、ありがとう! – Slushman

+0

私はサイトのどこでもこれを見つけることができませんでしたが、Googleで1秒間の検索でこの質問が第1の結果として出てきました。私はそれがStackOverflowのためのより良いものか、PHPExcelのドキュメンテーションのための悪いことであるか分かりません。 – trysis

+0

@DaveRandomこれは私のためには機能しません。私は 'phpexcel' 1.8を使用しています。 – Valay

関連する問題