PHPExcel - 使列不删除前导零
PHPExcel - make column not drop leading zeros
我目前正在 运行 编写一个 .csv 文件的代码,该文件每天都会创建并正在使用;作为分隔符,并将其导出到 excel 电子表格中。代码如下:
$xlFileName = $outDir."output_".date("n-j-Y").".xls";
require_once 'PHPExcel_1.8.0_doc/Classes/PHPExcel/IOFactory.php';
$objReader = PHPExcel_IOFactory::createReader('CSV');
$objReader->setDelimiter(";");
//$objReader->setInputEncoding('UTF-16LE');
$objPHPExcel = $objReader->load($todayFileName);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save($xlFileName);
我遇到的这个问题是一列是邮政编码,可以以 0 开头。有什么方法可以告诉 PHPExcel 不要在该特定列中删除前导零吗?
编辑:
示例 csv 内容:
Date;Zip Code;Data;Data;Data
10/12/2015;01234; Some Data ; More Data ; More Data
10/12/2015;12345; Some Data ; More Data ; More Data
10/12/2015;23456; Some Data ; More Data ; More Data
10/12/2015;34567; Some Data ; More Data ; More Data
电子表格中第一个邮政编码的导出始终是 1234 而不是 01234
因此,问题似乎与将其格式化为文本有关。我 运行 逐个单元格并手动添加零并将其作为字符串插入到单元格中。当我打开 excel 文件时,零仍然不见了。单元格被格式化为文本,如果我在 Excel 中添加一个零,它就会卡住。
所以,我走了一条完全不同的路。我有几个文件每天都必须转换,而邮政编码列并不总是相同的,所以我添加了一些代码来检查它在哪里。这是设置格式的代码,现在适用于我:
$worksheet = $objPHPExcel->getActiveSheet();
$zipColumn = "ZZ";
foreach ($worksheet->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
foreach ($cellIterator as $cell) {
if (!is_null($cell)) {
if($cell->getColumn() == $zipColumn){
$objPHPExcel->getActiveSheet()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode('[<=99999]00000;00000-0000');
}
if(strtolower( $cell->getValue() ) == "zip code"){
$zipColumn = $cell->getColumn();
}
}
}
}
希望对遇到类似问题的其他人有所帮助。
我目前正在 运行 编写一个 .csv 文件的代码,该文件每天都会创建并正在使用;作为分隔符,并将其导出到 excel 电子表格中。代码如下:
$xlFileName = $outDir."output_".date("n-j-Y").".xls";
require_once 'PHPExcel_1.8.0_doc/Classes/PHPExcel/IOFactory.php';
$objReader = PHPExcel_IOFactory::createReader('CSV');
$objReader->setDelimiter(";");
//$objReader->setInputEncoding('UTF-16LE');
$objPHPExcel = $objReader->load($todayFileName);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save($xlFileName);
我遇到的这个问题是一列是邮政编码,可以以 0 开头。有什么方法可以告诉 PHPExcel 不要在该特定列中删除前导零吗?
编辑:
示例 csv 内容:
Date;Zip Code;Data;Data;Data
10/12/2015;01234; Some Data ; More Data ; More Data
10/12/2015;12345; Some Data ; More Data ; More Data
10/12/2015;23456; Some Data ; More Data ; More Data
10/12/2015;34567; Some Data ; More Data ; More Data
电子表格中第一个邮政编码的导出始终是 1234 而不是 01234
因此,问题似乎与将其格式化为文本有关。我 运行 逐个单元格并手动添加零并将其作为字符串插入到单元格中。当我打开 excel 文件时,零仍然不见了。单元格被格式化为文本,如果我在 Excel 中添加一个零,它就会卡住。
所以,我走了一条完全不同的路。我有几个文件每天都必须转换,而邮政编码列并不总是相同的,所以我添加了一些代码来检查它在哪里。这是设置格式的代码,现在适用于我:
$worksheet = $objPHPExcel->getActiveSheet();
$zipColumn = "ZZ";
foreach ($worksheet->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
foreach ($cellIterator as $cell) {
if (!is_null($cell)) {
if($cell->getColumn() == $zipColumn){
$objPHPExcel->getActiveSheet()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode('[<=99999]00000;00000-0000');
}
if(strtolower( $cell->getValue() ) == "zip code"){
$zipColumn = $cell->getColumn();
}
}
}
}
希望对遇到类似问题的其他人有所帮助。