我正在使用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格式的那种格式?