我有一个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文件后,我注意到格式确实已实现。但是我需要按每个单元格标签才能看到它生效。是否存在替代或至少一种模拟制表符动作的方法,以便在打开时格式化单元格?
答案 0 :(得分:1)
发现了什么问题。它的这一行:
targetCell.setCellValue(request.getParameter("myNumber"));
它应该是:
targetCell.setCellValue(Double.parseDouble (request.getParameter("myNumber") ));
忘记数字excel单元格格式正确,必须传递双倍。