【问题标题】:JAVA - saving excel (office 2010) without format warningJAVA - 保存没有格式警告的excel(office 2010)
【发布时间】:2013-07-31 20:16:34
【问题描述】:

我必须在 excel 文件中写入一些数据。但是当我用这些数据打开 excel 文件时,会出现一个警告:

`The file you are trying to open, 'name.xls', is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a thrusted source before opening the file. Do you want to open the file now?`

我使用的是 Microsoft Excel 2010。 当我创建 HttpServletResponse 响应时,我正在添加有关标头和内容类型的此类信息:

response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", some info about file name + ".xls\"");

我也尝试设置另一个标题,如:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 和文件格式为.xlsx,但这也无济于事,因为警告仍然出现。

当我尝试使用 .csv 或 .xml 格式时,我没有这个问题,因为没有出现警告。是否有可能以编程方式消除此警告?

【问题讨论】:

  • 你推送到服务器的内容是什么?
  • 我想我不太清楚你的评论。什么意思?
  • 您可以将您尝试写入的数据(内容)发布到 xls 吗?
  • 我正在尝试在一个空文档上这样做

标签: java excel warnings office-2010 httpserver


【解决方案1】:

我也遇到了同样的问题,但是改成之后就解决了

response.setContentType("application/vnd.openxml");  

【讨论】:

    【解决方案2】:

    从上面的 cmets 开始 - 你得到的错误是因为你设置的内容类型和内容不匹配。尝试发布一个带有 TABLE 的 html,其中包含一些数据作为响应的内容。

    【讨论】:

      【解决方案3】:

      您尝试打开的文件“name.xls”与文件扩展名指定的格式不同...

      这是加载带有xls 扩展名的xlsx 文件时的标准Excel 警告。没有办法以编程方式避免它。您将必须解决潜在的不匹配问题。

      调试:

      1. 保存文件的本地副本,将扩展名更改为 xlsx,然后查看它在 Excel 中加载时是否没有警告。

      2. 如果是,则调整您的 ContentType 标头以适合。

      3. 如果不是,则文件可能是其他格式。找出该格式是什么,然后再次调整标题/文件名以适应。

      另请参阅我关于Extension Hardening 的回答here

      【讨论】:

      • 但是如果我将 ContentType 设置为 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 和 xlsx 扩展名,它应该可以正常工作吗?我是第一次创建这个文件,所以我定义了扩展。我仍然可以理解为什么会出现警告
      • 出现警告是因为文件格式和文件扩展名不匹配。我认为您需要回答@Richie 上面提出的问题:您在服务器上生成的文件的格式是什么。不是扩展名,是格式。或者换一种说法:您使用什么库来生成 Excel 文件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多