1

我必须在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 格式时,我没有这个问题,因为没有出现警告。有没有可能以编程方式摆脱这个警告?

4

3 回答 3

0

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

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

调试:

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

  2. 如果确实如此,则调整您的 ContentType 标头以适应。

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

另请参阅我在此处关于Extension Hardening的回答。

于 2013-07-31T12:28:01.063 回答
0

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

于 2013-08-01T04:38:41.573 回答
0

我有同样的问题,但在我改为

response.setContentType("application/vnd.openxml");  
于 2014-09-17T11:44:43.790 回答