【发布时间】:2013-06-15 11:59:59
【问题描述】:
我见过几个类似的问题,但没有一个可以回答我的问题。
我有一个导出到 CSV 按钮,可以将结果从我的数据库导出到 CSV。
我不想保存文件,但我只想使用标题将 echo 内容导出到应在 Excel(或类似产品)中打开的文件。
一切正常,但 Excel 似乎没有分隔值,而是显示 1 行中的所有行,逗号保持不变。我在其他地方找到了一个解决方案,我应该在第一行添加“sep=,\r\n”,以告诉 Excel 使用逗号作为分隔符,这样就可以很好地工作;但是,在其他产品中,它现在在第一行显示 sep=, 并继续显示剩余的输出。
这是我正在使用的代码:
header("Expires: 0");
header("Cache-control: private");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Description: File Transfer");
header("Content-Type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=export.csv");
echo "sep=,\r\n"; // This makes it work in excel but fails in other products such as openoffice
echo "this,is,just,a,test\r\n";
exit;
【问题讨论】:
-
MS Excel 所需的字符分隔符是特定于语言环境的.... 对于使用
,作为千位分隔符的语言环境,请使用;;或,用于其他语言环境。或者,创建一个 Excel BIFF 或 OfficeOpenXML 文件,这个问题根本不会出现 -
我不确定 Excel,但 OpenOffice 让我在打开表格时选择要用于表格的分隔符。如果您希望两者都具有最佳兼容性,您可能希望使用 Excel 的默认分隔符 - 也就是说 - 在用户下载文件之前无需为用户进行选择。