我正在使用这个我在stackoverflow上找到的函数
How to create and download a csv file from php script?
function array_to_csv_download($array, $filename = "export.csv", $delimiter=";") {
$f = fopen('php://output', 'w');
foreach ($array as $line) {
fputcsv($f, $line, $delimiter);
}
header('Content-Type: application/csv');
header('Content-Disposition: attachement; filename="'.$filename.'";');
}
问题出在导出文件中,我现在有4个额外的空行。
我如何修复此功能以防止这些额外的行。
Array (
[0] => Array ( [start] => 001-F15:B2:1-F [dest] => 002-F15:B2:5-Y [rres_1] => 100 [rres_2] => 100 [rres_3] => 100 [runit_1] => 0 [runit_2] => 0 [runit_3] => 0 [runit_4] => 0 [runit_5] => 0 [runit_6] => 0 [worker] => 0 [duration] => 12 )
[1] => Array ( [start] => 001-F15:B2:1-F [dest] => 005-F15:A5:3-M [rres_1] => 0 [rres_2] => 0 [rres_3] => 0 [runit_1] => 100 [runit_2] => 100 [runit_3] => 100 [runit_4] => 0 [runit_5] => 0 [runit_6] => 0 [worker] => 0 [duration] => 12 )
[2] => Array ( [start] => 006-F15:E4:2-Y [dest] => 004-F15:A5:1-Y [rres_1] => 0 [rres_2] => 0 [rres_3] => 0 [runit_1] => 0 [runit_2] => 0 [runit_3] => 0 [runit_4] => 100 [runit_5] => 100 [runit_6] => 100 [worker] => 100 [duration] => 12 )
)
此行在export.csv
正确
现在完整的代码:
function array_to_csv_download($array, $filename = "export.csv", $delimiter=";") {
header('Content-Type: application/csv');
header('Content-Disposition: attachement; filename="'.$filename.'";');
// open the "output" stream
// see http://www.php.net/manual/en/wrappers.php.php#refsect2-wrappers.php-unknown-unknown-unknown-descriptioq
$f = fopen('php://output', 'w');
foreach ($array as $line) {
fputcsv($f, $line, $delimiter);
}
}
$sql='SELECT p1.planet_name AS start, p2.planet_name AS dest, rres_1, rres_2, rres_3, runit_1, runit_2, runit_3, runit_4, runit_5, runit_6, worker, duration FROM traderoute tr
INNER JOIN planets p1 ON p1.planet_id=tr.start_planet
INNER JOIN planets p2 ON p2.planet_id=tr.dest_planet
WHERE player_id='.$game->player['user_id'];
$export=$db->queryrowset($sql);
array_to_csv_download($export);
die();
答案 0 :(得分:2)
我需要在包含的PHP文件中关闭PHP ?>
标记之后清理这些行。然后csv文件中的空行消失了。
答案 1 :(得分:-1)
尝试检查这样的空白行:
foreach ($array as $line) {
if(trim($line)!="")
{
fputcsv($f, $line, $delimiter);
}
}