【问题标题】:CSV file not loading correctly in ExcelCSV 文件无法在 Excel 中正确加载
【发布时间】: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 的默认分隔符 - 也就是说 - 在用户下载文件之前无需为用户进行选择。

标签: php excel csv


【解决方案1】:

正如 Mark Ba​​ker 所建议的,由于测光仪是由区域设置设置的,我将其更改为 ;它就像一个魅力:) 谢谢!

【讨论】:

    猜你喜欢
    • 2020-07-08
    • 2017-07-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2021-08-10
    • 2014-11-20
    • 2017-08-28
    相关资源
    最近更新 更多