1.poi导出Excel
1.1创建Excel工作薄对象
//创建Excel工作薄对象
HSSFWorkbook workbook = new HSSFWorkbook();
//创建Excel工作表对象
HSSFSheet sheet = workbook.createSheet("品名车型数量统计");
1.2创建行
HSSFRow row = sheet.createRow(0);
从第0行开始创建
1.3创建列,从而得到单元格
HSSFCell cell3 = row.createCell(0);
从当前行的第0列创建
1.4 给单元格赋值
cell3.setCellValue("品名车型数量统计");
1.5设置样式
HSSFCellStyle style = workbook.createCellStyle();
设置居中
//设置水平居中
style.setAlignment(HorizontalAlignment.CENTER);
//设置垂直居中
style.setVerticalAlignment(VerticalAlignment.CENTER);
设置边框
style.setBorderTop(BorderStyle.THIN);//上边框
style.setBorderBottom(BorderStyle.THIN); //下边框
style.setBorderLeft(BorderStyle.THIN); //左边框
style.setBorderRight(BorderStyle.THIN); //右边框
设置背景颜色
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
style.setFillForegroundColor(HSSFColor.HSSFColorPredefined.PALE_BLUE.getIndex());
给单元格应用设置的样式
cell3.setCellStyle(style);
合并单元格
CellRangeAddress regionx = new CellRangeAddress(0, 0, 0, productNameList1.size() + 1);
//四个参数为:开始行,结束行,开始列,结束列
合并单元格后设置样式
sheet.addMergedRegion(regionx);
//合并后设置边框
RegionUtil.setBorderBottom(BorderStyle.THIN, regionx, sheet);
RegionUtil.setBorderTop(BorderStyle.THIN, regionx, sheet);
RegionUtil.setBorderLeft(BorderStyle.THIN, regionx, sheet);
RegionUtil.setBorderRight(BorderStyle.THIN, regionx, sheet);
设置行高
row.setHeight((short) (20 * 24));
设置列宽
sheet.setColumnWidth(0, 20 * 150);
第一个参数是第几列,第二个参数是宽度
注意:poi中的行高单位和excel中的行高单位不同,excel中的行高单位是pt(point,磅),而poi中的行高单位则是twips(缇)。
换算公式是:1pt = 20twips
将创建的excel返回
SimpleDateFormat ss = new SimpleDateFormat("yyyyMMddHHmmssSS");
String name = ss.format(new Date()) + ".xls";
try {
//文档输出
File file = new File(uploadpath);
if (!file.exists()) {
file.mkdirs();
}
FileOutputStream out = new FileOutputStream(uploadpath + name);
workbook.write(out);
out.close();
} catch (
Exception e) {
e.printStackTrace();
}
return ResultData.ok(name);