写入Excel文件模板不遵循已定义的单元格数据格式

时间:2012-07-10 01:34:44

标签: java servlets apache-poi

我有一个excel文件,其单元格具有不同的数据格式,从简单的货币格式$#,##0.00 ($1,200.00)到更复杂的格式。

问题是当我写这些单元格时,不遵循格式。因此,如果我为货币格式的单元格输入值,则该值将显示为不带格式:

例如:   我输入了1234。我期望的是$1,234.00(如excel单元格中所定义)。我得到的仍然是1234

在我的尝试中,我甚至尝试将单元格自己的格式应用于自身

这是我使用的代码:

ServletContext context = getServletContext();
InputStream inp = context.getResourceAsStream("/WEB-INF/MyExcel.xlsx");

Workbook wbTemp = new XSSFWorkbook(inp);    
Sheet wbTempSheet = wbTemp.getSheetAt(0);

Cell targetCell = wbTempSheet.getRow(0).getCell(0);
targetCell.setCellValue(request.getParameter("myNumber"));

//i even tried reapplying the cell's own format to itself
CellStyle cs = targetCell.getCellStyle();
String df = cs.getDataFormatString();
System.out.println(df);
cs.setDataFormat(wbTemp.createDataFormat().getFormat(df));
targetCell.setCellStyle(cs);

在检查excel文件后,我注意到格式确实已实现。但是我需要按每个单元格标签才能看到它生效。是否存在替代或至少一种模拟制表符动作的方法,以便在打开时格式化单元格?

1 个答案:

答案 0 :(得分:1)

发现了什么问题。它的这一行: targetCell.setCellValue(request.getParameter("myNumber"));

它应该是: targetCell.setCellValue(Double.parseDouble (request.getParameter("myNumber") ));

忘记数字excel单元格格式正确,必须传递双倍。