【问题标题】:Saving XLS file using SELECT INTO OUTFILE command in mysql在 mysql 中使用 SELECT INTO OUTFILE 命令保存 XLS 文件
【发布时间】:2025-12-27 20:40:07
【问题描述】:

我使用 SELECT INTO OUTFILE 查询并将 XLS 文件作为

"SELECT * INTO OUTFILE " . "myfile.xls" . " FIELDS TERMINATED BY '\t'  LINES TERMINATED BY '\n' FROM transactions where ppno like '%$cid%' 

我使用的是 XLS 文件而不是 CSV。这有什么不对吗。当我尝试在 Microsoft Excel 中打开该 XLS 文件时,它显示“文件格式不同,您确定要打开吗”...请建议我

【问题讨论】:

    标签: php mysql excel select csv


    【解决方案1】:

    正如 Piskvor 和 Devart 所说,简单地为文件提供 .xls 的扩展名实际上并不能使其成为 Excel 文件......生成的文件内容仍然只是一个制表符分隔的值文件,因为您的 SQL 语句使清除

    FIELDS TERMINATED BY '\t'  LINES TERMINATED BY '\n' 
    

    如果您想在 PHP 脚本中创建一个 真实 Excel 文件,您还可以(例如)在其中格式化您要导出的数据,那么您需要使用一个库,例如作为我自己的PHPExcel,或this thread 中列出的其他人之一。

    【讨论】:

      【解决方案2】:

      是的,这确实有问题。即,您只是更改文件名 - 这不足以自动将您的数据转换为适当的数据格式(换句话说,“任何其他名称的玫瑰都会闻起来很香”)。请注意,Excel 实际上在错误消息中告诉您这一点。

      SELECT INTO OUTFILE 不支持 Excel 文档。您需要 a) 导出为 CSV,然后进行转换,或者 b) 获取具有此导出功能的工具(例如 phpMyAdmin 或 Navicat)。

      【讨论】:

        【解决方案3】:

        可以设置任何文件扩展名。实际上 xls 是 Excel 尝试读取的二进制 OLE 文件。 SELECT INTO OUTFILE 生成文本文件,尝试以 CSV 或 TXT 扩展名存储文件。在这种情况下,Excel 将正确打开文件。

        【讨论】: