打开导出的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“数字”
你会看到十进制格式的数字。