PHPExcel setFormatCode设置为text但将dot转换为逗号

时间:2017-06-18 07:28:47

标签: php phpexcel number-formatting

我正在使用CodeIgniter 2并使用PHPExcel 1.8为Excel 2007生成数据

在调用填充单元格之前,我已将所有单元格转换为文本。并使用 123456.54321 等数据填充B列单元格。但是我从 Ms看到的结果单元格。 Excel 2016 ,它显示 123456,543 ,而公式栏中的值本身显示 123456,54321

编辑:我的期望是,它保持为 123456.54321 ,因为它不是数值。这是一个身份证号码。我读过this question,但它仍然不是一个好方法,因为用户需要设置Excel

同时,值 123.4567.54321 的列单元格C仍按原样写入。

从数据库存储的所有值当然是VARCHAR,在这些字段中没有数字

这是我使用的代码片段

    $excel->setActiveSheetIndex(0);

    $excel->getActiveSheet()->setTitle('Transaction Report');

    $i = 1;
    foreach ($data->result() as $row) {
        $excel->getActiveSheet()->getStyle('A'.$i)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
        $excel->getActiveSheet()->setCellValue('A'.$i, $row->id_transaction);
        $excel->getActiveSheet()->getStyle('B'.$i)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
        $excel->getActiveSheet()->setCellValue('B'.$i, $row->id_courrier);
        $excel->getActiveSheet()->getStyle('C'.$i)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
        $excel->getActiveSheet()->setCellValue('C'.$i, $row->tax_id);
        $i++;
    }

    $filename = 'reporting'.$date_start.'_to_'.$date_end.'.xlsx';
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="'.$filename.'"');
    header('Cache-Control: max-age=0');

    $objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
    $objWriter->save('php://output');

我的问题是,如何使用格式XXXX.XXXXX将数据存储到Excel时如何保留这些点值,如果可能,如何使其与所有Excel 2007及更高版本和区域设置兼容。

仅供参考,$ row-> id_courrier是一个ID号,它只是以这样的格式发生。 2组数字,点为分离。 那不是数值。

另外,如果可能的话,是否有任何非黑客方法可以防止这种错误插入到Excel格式的那种格式?

0 个答案:

没有答案