尝试在MS Excel中打开时,使用PHP导出CSV文件会创建损坏的文件

时间:2014-06-16 16:43:45

标签: php excel export-to-csv

我有以下脚本将使用php将数据从我的数据库导出到csv文件。一切正常,除非我尝试在excel中打开文件,我得到“文件已损坏”。当我运行此代码时,它显示错误 - “文件已损坏,无法打开”。提前谢谢!

<?php

// Connection
include_once('conn.php');

$sql = "select * from info";
$qur = mysql_query($sql);

// Enable to download this file
$filename = "sampledata.csv";

header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: text/csv");

$display = fopen("php://output", 'w');

$flag = false;
while($row = mysql_fetch_assoc($qur)) {
    if(!$flag) {
      // display field/column names as first row
      fputcsv($display, array_keys($row), ",", '"');
      $flag = true;
    }
    fputcsv($display, array_values($row), ",", '"');
  }

fclose($display);
exit;
?>

1 个答案:

答案 0 :(得分:0)

我找到了自己问题的答案。只需要在我们调用头文件之前添加ob_clean()行来下载csv文件以清除输出缓冲区。这将解决在Excel中不打开csv文件的错误。