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

时间:2015-06-10 10:22:31

标签: java excel csv decimal

我正在尝试导出内容类型错误的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();

这是如何引起的?如何解决?

2 个答案:

答案 0 :(得分:1)

您可以使用此代码:

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

我经常使用更加冗长,强制文本格式:

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

(见https://stackoverflow.com/a/165052/476791

要验证此解决方案是否可以打开记事本,请输入="2.0",将其另存为Test.csv在桌面上,然后双击它。

答案 1 :(得分:0)

问题与excel而不是java中的渲染有关。

在您的Excel文档中,

右键单击单元格>格式化单元格>从类别

中选择“数字”

您将看到十进制格式的数字。