【问题标题】:Excel not showing Euro symbol correctly in generated CSV fileExcel 在生成的 CSV 文件中未正确显示欧元符号
【发布时间】:2019-11-21 12:54:56
【问题描述】:

我正在使用 Web 应用程序,我需要生成 CSV 文件。 CSV 文件包含像 140 € 这样的欧元价格,但是当我打开 CSV 文件时,Excel 无法正确显示欧元符号 140 €

我从 Oracle 数据库中读取数据,将 CSV 文件内容存储在 List<String> 中,并将结果写入 HttpServletResponse response 中类似

List<String> data = getCsvContent();
response.getOutPutStream().write(data.toString().getBytes("UTF-8")); 

我在 Windows 7、MS Office 2010 中工作,我想知道是否有任何方法可以告诉 Excel 以 UTF-8 编码打开此文件?我尝试添加BOM,但没有效果。

请帮我解决这个问题,在此先感谢

编辑:

我正在使用 AJAX 调用来下载文件,在下载文件之前,我将 BOM 添加到结果中。当我通过双击 Excel 打开文件时,在开发环境(本地)中正确打开 CSV 但是当我在远程服务器中部署应用程序时,csv 文件中的欧元符号未正确写入,这意味着 Excel 无法显示符号正确。

谁能说出问题所在?

【问题讨论】:

  • 您必须使用其他版本的 Excel 进行检查(如果您使用 Excel 打开 CSV)。该问题出现在某些版本的 Excel for CSV 中。另外,您可以设置编码
  • 我可以使用“没有 BOM 的常规 UTF8 编码 CSV 文件”重现您的问题。但是,如果我将 BOM 添加到文件的开头,它会正确呈现欧元符号。也许您没有正确添加 BOM?您是否使用十六进制编辑器检查了生成的 CSV 文件以确保在开头正确添加 BOM?
  • 也许How to add a UTF-8 BOM in java 会有所帮助。

标签: java jquery excel spring csv


【解决方案1】:

我遇到了同样的问题。 您可以通过以下方式导入:

  1. 创建一个新的 Excel 工作表。
  2. Go to Data --> From Text,如下图所示(德文 Excel 版)

  1. 在弹出窗口中将文件来源设置为 Unicode (UTF-8)。
  2. 单击下一步并根据您的.csv 文件设置分隔符..(很可能是逗号)
  3. 单击“下一步”查看所有列。 您可以为每个列设置特定的数据格式(如日期、文本...)

完成向导,它应该可以工作了。

【讨论】:

  • 我知道这个解决方案和其他一些方法。但我需要一个解决方案,因为我们不能告诉客户通过这种方式打开文件。客户端需要下载文件并双击文件才能正确看到内容
  • 我不知道您正在寻找一种客户可以打开您的 csv 的方式。你的问题并不清楚。 answer 中显示了另一种更改 Excels 默认设置以接受 utf-8 编码的方法,但我不确定这对客户来说是否更简单
猜你喜欢
  • 2014-10-23
  • 2011-05-03
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多