JAVA – 保存excel(办公室2010)没有格式警告

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

`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.当我创buildHttpServletResponse响应时,我添加了有关标题和内容types的信息:

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

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

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

debugging:

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

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

  3. 如果没有,那么文件可能是其他格式。 找出这个格式是什么,并再次调整头文件/文件名以适应。

另请参阅我在这里关于延伸强化的答案。

从上面的评论 – 你得到的错误是因为你正在设置的内容types和内容不匹配。尝试张贴一个表格与一些数据作为响应内容的HTML。

我有同样的问题,但我改变后得到解决

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