PHPExcel выводит нули в виде пустых ячеек

Я создаю плагин WordPress с помощью PHPExcel для экспорта отчетов о посещаемости студентов. До сих пор я смог успешно взять массив данных о студентах (включая посещаемость) и преобразовать и загрузить его в виде таблицы. К сожалению, есть странная ошибка: когда учащийся посещал нулевые события, эта ячейка в электронной таблице пуста, а не показывает нуль. Я бы предпочел, чтобы это получилось с нулевым значением, но я не могу найти способ сделать это. Здесь мой script:

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 содержит массив информации о студенте, который структурирован следующим образом:

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() для заполнения электронной таблицы, есть ли что-то, что я должен сделать, чтобы эти нули отображались правильно?

Ответ 1

Я думаю, что вы стали жертвой слабо типизированных сравнений здесь - вы указали null как ваш второй параметр на fromArray(), который представляет Value in source array that stands for blank cell. Поскольку null == 0 это означает, что ноль приведет к пустой ячейке, если вы не установите четвертый аргумент в true.

Попробуйте изменить:

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

... до...

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