两种方法:
一、字符串拼接:“20.36”+“%”,
简单直接;
缺点是,生成的Excel不能直接创建统计图(不是数字,需要手动转换格式)
二、使用POI的单元格样式:
// 创建样式
HSSFCellStyle cellStyle2 = workbook.createCellStyle();
// 单元格数据格式
cellStyle2.setDataFormat(workbook.createDataFormat().getFormat("0.00%"));
下面是完整代码(单元测试可直接使用):
@org.junit.Test
public void exportExcel() throws IOException {
HSSFWorkbook workbook = new HSSFWorkbook();
// 设置字体
HSSFFont font2 = workbook.createFont();
// 字体高度
font2.setFontHeightInPoints((short) 11);
// 字体颜色
font2.setColor(HSSFFont.COLOR_NORMAL);
// 创建样式
HSSFCellStyle cellStyle2 = workbook.createCellStyle();
cellStyle2.setFont(font2);
// 水平布局:居中
cellStyle2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 垂直居中
cellStyle2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
// 单元格颜色
cellStyle2.setFillForegroundColor(HSSFColor.ORANGE.index);
// 填充单元格颜色
cellStyle2.setFillPattern((short) 1);
// 单元格数据格式
cellStyle2.setDataFormat(workbook.createDataFormat().getFormat("0.00%"));
// 数据
int a = 99;
double b = 101;
double rate = a / b;
rate = new BigDecimal(rate).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue();
// 生成Excel
HSSFSheet sheet = workbook.createSheet("sheet");
HSSFRow row = sheet.createRow(0);
row.createCell(0).setCellValue("占比");
row.createCell(1).setCellValue(rate);
row.getCell(1).setCellStyle(cellStyle2);
// 输出Excel
String filePath = "D://abc.xls";
FileOutputStream fout = new FileOutputStream(filePath);
workbook.write(fout);
fout.close();
}
效果图: