ショコラ
PHPExcel fromArrayで値を設定すると頭の0が消える
https://github.com/PHPOffice/PHPExcel/blob/develop/Documentation/markdown/Overview/07-Accessing-Cells.md#using-value-binders-to-facilitate-data-entry
辺りの話題のようですが、
fromArray で設定すると、
PHPExcel はデフォルトの PHPExcel_Cell_DefaultValueBinder を使うようなので、
これを置き換えてしまいます。
これで、fromArray で読み込んだものが全て文字列として読み込めます。
もっさん先輩
class PHPExcel_Cell_StringValueBinder extends PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder
{
public function bindValue(PHPExcel_Cell $cell, $value = null)
{
// sanitize UTF-8 strings
if (is_string($value)) {
$value = PHPExcel_Shared_String::SanitizeUTF8($value);
}
$value = PHPExcel_Shared_String::SanitizeUTF8($value);
$cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING);
// Set style
$cell->getWorksheet()->getStyle( $cell->getCoordinate() )
->getAlignment()->setWrapText(TRUE);
return true;
}
}
$val = array(
array('mossan','001'),
array('chocolate','002'),
);
PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_StringValueBinder );
$book = new PHPExcel();
$book->getActiveSheet()->fromArray($val,null,'A1',true);
$writer = PHPExcel_IOFactory::createWriter($book,'Excel2007');
$writer->save('out.xlsx');
デフォルトに戻すときはコチラを実行します。
PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_DefaultValueBinder );
以上