我正在尝试导出内容类型错误的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();
这是如何引起的?如何解决?
答案 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文档中,
右键单击单元格>格式化单元格>从类别
中选择“数字”您将看到十进制格式的数字。