在mysql中使用SELECT INTO OUTFILE命令保存XLS文件

时间:2011-04-22 08:08:11

标签: php mysql excel select csv

我正在使用带有XLS文件的SELECT INTO OUTFILE查询

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

我使用XLS文件而不是CSV。这有什么不对吗?当我尝试在Microsoft Excel中打开该XLS文件时,它说'文件格式不同,你确定要打开'... Plz建议我

3 个答案:

答案 0 :(得分:3)

正如Piskvor和Devart所说,只是给文件扩展名为.xls并不会使它成为Excel文件....生成的文件内容仍然只是一个以制表符分隔的值文件,因为你的SQL语句使明确

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

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