2

我有一个类似于这个问题的问题。也就是说 - 我需要将 MySQL 数据库中的一些 UTF8 数据导出到 MS Excel。

Excel 提供的陷阱:

  • Excel 将 UTF8 格式的 CSV 文件打开为 ANSCI,从而破坏
  • Excel正确打开制表符分隔的 UTF8 文件,但不支持换行符(我的数据有换行符,但在最坏的情况下我可能会丢失这些文件)
  • 显然,Excel打开 UTF-16LE(小端序)编码的 CSV 文件。但是,据我所知,MySQL INTO OUTFILE 不接受内容编码参数,并且默认为数据库编码(UTF8)。

我的网络应用程序是 PHP 驱动的,但不幸的是我不能使用 PHP Excel 文件制作库,因为数据库非常大。我所有的导出都必须通过 MySQL 完成。

如果有人知道如何让 MySQL 在这方面跳过 Excel 的箍,那就太好了。

非常感谢,

杰克

编辑答案描述了适用于 Excel 2007 的解决方案。向文件添加“BOM”,我可以通过附加 BOM 的 PHP 脚本将输出文件提供给客户端来完成。理想情况下,我想找到一个也适用于 2003 年的解决方案。

4

2 回答 2

2

为了处理likebreaks,我建议添加:

FIELDS ENCLOSED BY '"'

来自mysql docs的更完整示例:

SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM test_table;
于 2011-04-11T08:53:10.313 回答
1

我记得在 Excel 中遇到过这个问题。BOM 修复确实适用于 Excel 2007 和 2010。我们还希望支持 2003,但是我们的解决方案是只编写 XLS 文件而不是 CSV 文件(使用 Java)。因为您是从 MySQL 导出的,所以这听起来不像是您的选择。想到的一个想法是在导出后将 UTF8 输出转换为 UTF-16LE。这个页面解释了如何用 Perl 来做这件事。

于 2011-04-11T08:54:25.400 回答