POI导出,Excel数值无法进行换算问题
for (Map<String, String> map : list) {
Row row = sheet.createRow(j);
for (int k = 0; k < headerList.size(); k++) {
HSSFCellStyle contextstyle =wb.createCellStyle();
Cell cell = row.createCell(k);
cell.setCellValue(data.toString());
}
j++;
}
void setCellValue(String value);
导出时默认为string类型,用正则表达式进行处理,匹配然后进行类型强转
for (Map<String, String> map : list) {
Row row = sheet.createRow(j);
for (int k = 0; k < headerList.size(); k++) {
HSSFCellStyle contextstyle =wb.createCellStyle();
Cell cell = row.createCell(k);
Object data = map.get(headerList.get(k));
Boolean isNum = false;//data是否为数值型
Boolean isInteger=false;//data是否为整数
Boolean isPercent=false;//data是否为百分数
if (data != null || "".equals(data)) {
isNum = data.toString().matches("^(-?\\d+)(\\.\\d+)?$");
isInteger=data.toString().matches("^[-\\+]?[\\d]*$");
isPercent=data.toString().contains("%");
}
if (isNum && !isPercent) {
HSSFDataFormat df = wb.createDataFormat(); //设置数据格式
if (isInteger) {
contextstyle.setDataFormat(df.getBuiltinFormat("#,#0"));//数据格式只显示整数
}else{
contextstyle.setDataFormat(df.getBuiltinFormat("#,##0.00"));//保留两位小数点
}
cell.setCellValue(Double.parseDouble(data.toString()));
} else {
if(data!=null){
cell.setCellValue(data.toString());
}
}
}
j++;
}
问题解决,再导出时Excel即可进行数值换算