出现问题 :导出Excel时为文本类型选中一整列不能求和,单元格左上角出现绿三角
如下图:
查了一下好多是通过设置单元格数据类型方式解决
如导出类型设置为整数或小数格式:
//引入导出Excel路径
File fi = new File(request.getSession().getServletContext().getRealPath("/") + "WEB-INF/jsp/purchasing/orderExcel/Excel.xls");
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fi));
//读取excel模板
HSSFWorkbook wb = new HSSFWorkbook(fs);
//读取了模板内所有sheet内容
HSSFSheet sheet = wb.getSheetAt(0);
//如果这行没有了,整个公式都不会有自动计算的效果的
sheet.setForceFormulaRecalculation(true);
// 循环将excel中的数据存入库
for (int i = 1; i < lists.size(); i++) {
List<Object> list = lists.get(i);
HSSFRow dataRow = sheet.createRow((int) i + 1);
CellStyle cellStyle = wb.createCellStyle();
//设置为整数
dataRow.createCell(0).setCellValue(util.getFormat(String.valueOf(list.get(0))));
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0"));
dataRow.createCell(0).setCellStyle(cellStyle);
//设置为小数
dataRow.createCell(1).setCellValue(util.getFormat(String.valueOf(list.get(1))));
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
dataRow.createCell(1).setCellStyle(cellStyle);
}
我用了但是没效果。
//double转int整数类型
dataRow.createCell(32).setCellValue((int)Double.parseDouble(list.get(9).toString()));//数量
//trim()去掉收尾空格防止报For input string: "8.39 "这样错误。
dataRow.createCell(36).setCellValue(Double.parseDouble((list.get(10).toString()).trim()));//含税单价
这样就好用了。
记录下:对象object转换成new BigDecimal
dataRow.createCell(36).setCellValue(new BigDecimal(list.get(10).toString().trim()).doubleValue());