0

我希望将我的二维数组保存到 .xls 文件中。如果使用此代码,则保存数据时不带前导零:

$arr = array(
    array("01", "02", "03"),
    array("001", "02", "03"),
    array("00001", "02", "03"),
);


// include PHPExcel library

$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->fromArray($arr);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save("file.xls");

如果改用它,01则另存为00001

......
$objPHPExcel->getActiveSheet()->fromArray($arr);
$objPHPExcel->getActiveSheet()->getStyle('A1:C3')->getNumberFormat()->setFormatCode("00000");
.....

我怎么解决这个问题?如何正确地将数组中的原始数据保存到 .xls 文件中?

4

1 回答 1

1

尝试将单元格设置为文本格式:

$objPHPExcel->getActiveSheet()->getStyle('A1:C3')->getNumberFormat()->setFormatCode('@');

或遍历数组,根据字符串的长度 ( 设置格式->setFormatCode(str_repeat('0', strlen($arrElem));,但这与遍历数组并显式设置每个值一样愚蠢:

$objPHPExcel->->getCell('A1')->setValueExplicit($arr[0][0], PHPExcel_Cell_DataType::TYPE_STRING);

这里也可能有一种直率的方法:

$objPHPExcel->getDefaultStyle()
            ->getNumberFormat()
            ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);

这应该将默认格式设置为 txt。

Smokey(我建议)是在每次迭代中使用数字格式。

$col = range('A','C');
$cell = '';
foreach($arr as $colIndex => $vals)
{
    $cell = $col[$colIndex];//the first array will be $col[0] === A
    foreach($vals as $row => $val)
    {
        $cell .= $row +1;//A.(0+1) -->A1
        $objPHPExcel->getCell($cell)
                     ->getNumberFormat()
                     ->setFormatCode(str_repeat('0', strlen($val)));
                     //for 001, this is str_repeat('0',3) or '000'
    }
}

这会相应地格式化单元格,以添加正确数量的前导零。如果一切都失败了,这是设置正确格式的相当好的方法

于 2013-07-26T14:01:14.063 回答