打开导出的CSV文件时,Excel不显示零小数

我想导出一个错误的内容types的CSV文件,所以它被打开在Excel中。 当对象的值为2.0时,在Excel工作表中它只显示2.它只是省略了十进制值。 当它的值是2.1,2.2等时它工作正常

问题出现在2.0,3.0时。

StringBuffer sb= new StringBuffer(); sb.append("2.0"); HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext() .getResponse(); response.setCharacterEncoding("UTF-8"); response.setContentType("application/ms-excel"); response.setHeader("Content-Disposition", "attachment;filename=Test.csv"); response.getOutputStream().write(sb.toString().getBytes(Charset.forName("UTF-8"))); response.getOutputStream().flush(); response.getOutputStream().close(); FacesContext.getCurrentInstance().responseComplete(); 

这是如何造成的,我该如何解决?

你可以使用这个代码:

  sb.append("\"2.0\""); 

我经常用更冗长的方式来强制文本格式:

  sb.append("=\"2.0\""); 

(请参阅https://stackoverflow.com/a/165052/476791

要validation,这个解决scheme工作打开记事本,input="2.0" ,将其保存为Test.csv在桌面上,双击它。

这个问题与在Excel而不是java中渲染有关。

在你的excel文件上,

右键单击单元格>格式单元格>从类别中select“数字”

你会看到十进制格式的数字。