Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPExcel setFormatCode设置为文本,但将点转换为逗号_Php_Phpexcel_Number Formatting - Fatal编程技术网

PHPExcel setFormatCode设置为文本,但将点转换为逗号

PHPExcel setFormatCode设置为文本,但将点转换为逗号,php,phpexcel,number-formatting,Php,Phpexcel,Number Formatting,我正在使用CodeIgniter 2和PHPExcel 1.8生成Excel 2007的数据 在调用填充单元格之前,我已将所有单元格转换为文本。并用类似于123456.54321的数据填充B列单元格。但我在Ms.Excel 2016中看到的结果单元格显示为123456543,而公式栏中的值本身显示为12345654321 EDIT:我希望它保持为123456.54321,因为它不是数值。这是一个身份证号码。我也读过,但这仍然不是一个好方法,因为用户需要设置Excel 同时,值为123.4567.

我正在使用CodeIgniter 2和PHPExcel 1.8生成Excel 2007的数据

在调用填充单元格之前,我已将所有单元格转换为文本。并用类似于123456.54321的数据填充B列单元格。但我在Ms.Excel 2016中看到的结果单元格显示为123456543,而公式栏中的值本身显示为12345654321

EDIT:我希望它保持为123456.54321,因为它不是数值。这是一个身份证号码。我也读过,但这仍然不是一个好方法,因为用户需要设置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\u courrier是一个id号,它的格式就是这样。2组以点为分隔符的数字。 这不是数值


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

数字似乎正确,Excel中的显示也似乎正确(它在保留值的同时舍入数字)-因此,可能只是您想要一些不合适的东西?Excel中的小数分隔符是逗号,而不是点。你为什么要改变这一点?顺便说一句,您可能需要更改桌面系统的区域设置来更改该设置。-我认为这不是编程问题。不,这不是我的意思。这就是代码id,它的格式是这样的(2组数字,以点为分隔符),id\u courrier就像主键。不是数值。另外,为什么它被标记为来自无关问题的副本?Excel中的格式代码是什么?
setFormatCode(PHPExcel_Style_NumberFormat::format_TEXT)已将单元格创建为文本,并且根据该代码生成的Excel文件声明单元格格式为文本。但不知何故,当它从该代码中插入时,该值仍被视为数字,并将点转换为逗号,因此与格式代码无关。我认为您应该在前面添加一个引号,以逐字逐句地传递数据你在找这个吗?