将数组数据转换为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,所以没有东西会被转换为浮动的,所以没有精度的损失