将数组数据转换为Excel

我使用PHPExcel将数组数据转换为Excel。 当Excel文件创build时,数据存储行明智,但我想明智地存储数据列。 我的数组如下:

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 

如果将一个简单的1维数组传递给fromArray()方法,那么PHPExcel会假定它是一行,这就是您所看到的。

将您的数组转换为二维数组

由于PHPExcel将这些值视为数值,并且它们大于PHP中32位有符号整数的限制(并且您可能正在运行32位PHP),所以它们将被转换为浮点数,可能会失去准确性,所以我不会自己使用这种方法。

如果你想将数组转换成二维数组,然后使用:

 $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()的使用会强制这些值被视为一个string,所以没有东西会被转换为浮动的,所以没有精度的损失