如何将列名称设置为.csv文件列的名称?
问题描述:
我有一个代码,它会创建我的表的.csv
导出。这里是我的代码:如何将列名称设置为.csv文件列的名称?
public function export(Request $request){
header('Content-Type: application/excel');
header('Content-Disposition: attachment; filename="export.csv"');
$tb_name_alias = $request->tb_name;
$convert_alias_to_table_name = array('person' => "App\\persons");
$tb_name = $convert_alias_to_table_name[$tb_name_alias];
$arr = $tb_name::all()->toArray();
$newarr = array();
$size_of_outer_array = sizeof($arr);
For ($i = 0; $i < $size_of_outer_array; $i++) {
$newarr[] = implode(",",$arr[$i]);
}
$fp = fopen('php://output', 'w');
foreach ($newarr as $line) {
$val = explode(",", $line);
fputcsv($fp, $val);
}
fclose($fp);
}
它的工作原理为好,但是当我再次导入它,它看起来像这样:
正如你看到的,列名是不是真实的。他们是col1
,col2
等。但我需要设置一些名称作为列名。像id
,name
等。
我该怎么做?
答
试试这个
$fp = fopen('php://output', 'w');
fputcsv($fp, array('Column 1', 'Column 2', 'Column 3'));
foreach ($newarr as $line) {
$val = explode(",", $line);
fputcsv($fp, $val);
}
fclose($fp);
+0
那么你的方法没有设置任何名称对于列......它只是创建一个行作为第一个。我不想那样 – stack
请参考下面适合您的答案http://*.com/questions/11810599/in-php-to-dynamically-get-table-name-and-fields-链接from-csv-file-and-import-to-mysq –
你可以显示一行数据到$ newarr。的print_r($ newarr); – user3099298
@ user3099298这里是数组:'$ newarr = array('1,John,22','2,Jack,30','3,Peter,14');' – stack