我正在使用PHPExcel将数组数据转换为Excel。创建Excel文件时,数据以行方式存储,但我希望以列方式存储数据。我的数组如下:
array (size=3)
0 => string '8801755568952' (length=13)
1 => string '8801755556987' (length=13)
2 => string '8801755587985' (length=13)
我的Excel转换代码数组是:
$objPHPExcel->getActiveSheet()->fromArray($csv_data, null, 'A1')
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
return $objWriter->save($xls_output_path);
我的输出是:
8801755568952 8801755556987 8801755587985
我想要的输出是:
8801755568952
8801755556987
8801755587985
答案 0 :(得分:1)
如果您将一个简单的1维数组传递给fromArray()
方法,那么PHPExcel会假定它是一行,这就是您所看到的。
将数组转换为二维数组
由于PHPExcel会将这些值视为数字,并且它们大于PHP中32位有符号整数的限制(并且您可能正在运行32位PHP),它们将被转换为float,你可能会失去准确性,所以我不会自己使用这种方法。
如果您确实想将数组转换为二维数组,请使用:
$csv_data = call_user_func_array(
'array_map',
array_merge(array(NULL), [$csv_data])
);
或者只是循环写入每一行
$row = 1;
foreach($csv_data as $cellData) {
$objPHPExcel->getActiveSheet()->setCellValueExplicit('A'.$row++, $cellData);
}
使用setCellValueExplicit()
将强制将值视为字符串,因此不会将任何内容强制转换为float,因此不会丢失精度