使用了poi导出excel,最大的感受就是用过查过忘过,恰逢闲暇,赋小结一篇,以备后用
compile group: 'org.apache.poi', name: 'poi', version: '3.9'
这里导出excel使用的方法是代码生成,而非使用excel模板(虽然excel模板貌似应该好用点的)
这里做个小结给大家:
-
基本用法:
//新建一个文档
HSSFWorkbook wb = new HSSFWorkbook();
//新建一个sheet页,名称为sheet1
HSSFSheet sheet = wb.createSheet("sheet1");
//新建一个样式
HSSFCellStyle style2 = wb.createCellStyle();//之后用到的所有样式都需要在这里设置并赋值
//新建一个字体
HSSFFont whiteFont = wb.createFont();
//新建第一行
HSSFRow row1 = sheet.createRow(0);//注意这里所有的索引都是从0开始
//第一行里创建第一个单元格
cell = row1.createCell(0);//即第一行第一个单元格
//单元格里存放内容
cell.setCellValue("写入成功");
-
设置颜色字体
whiteFont.setColor(IndexedColors.WHITE.getIndex());//颜色-白
whiteFont.setFontHeightInPoints((short) 9);//大小
whiteFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗
-
设置单元格样式
style2.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中格式
//设置背景色
style2.setFillForegroundColor(IndexedColors.GREEN.getIndex());//绿色背景
style2.setFillPattern(CellStyle.SOLID_FOREGROUND);
//设置边框
style2.setBorderTop(CellStyle.SOLID_FOREGROUND);//上边框
style2.setBorderBottom(CellStyle.SOLID_FOREGROUND);
style2.setBorderLeft(CellStyle.SOLID_FOREGROUND);
style2.setBorderRight(CellStyle.SOLID_FOREGROUND);
-
合并单元格
//合并单元格
CellRangeAddress region = new CellRangeAddress(1, 1, 0, 15);
RegionUtil.setBorderBottom(HSSFCellStyle.SOLID_FOREGROUND, region, sheet, wb);
RegionUtil.setBorderLeft(HSSFCellStyle.SOLID_FOREGROUND, region, sheet, wb);
RegionUtil.setBorderRight(HSSFCellStyle.SOLID_FOREGROUND, region, sheet, wb);
RegionUtil.setBorderTop(HSSFCellStyle.SOLID_FOREGROUND, region, sheet, wb);
sheet.addMergedRegion(region);
设置单元格的属性
HSSFDataFormat df = wb.createDataFormat();//format类
//小数两位样式
HSSFCellStyle style_content_f2 = wb.createCellStyle();
style_content_f2.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
style_content_f2.setDataFormat(df.getFormat("#,#0.00"));
style_content_f2.setFont(font_content);
//保留整数样式的金额
HSSFCellStyle style_content_f0 = wb.createCellStyle();
style_content_f0.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
style_content_f0.setDataFormat(df.getFormat("#,#0"));
style_content_f0.setFont(font_content);
//保留整数样式
HSSFCellStyle style_content_zs = wb.createCellStyle();
style_content_zs.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style_content_zs.setDataFormat(df.getFormat("0"));//#.##
style_content_zs.setFont(font_content);
//日期格式,年月日时分秒
HSSFCellStyle style_dateTime = wb.createCellStyle();
style_dateTime.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style_dateTime.setDataFormat(df.getFormat("yyyy-MM-dd HH:mm:ss"));
style_dateTime.setFont(font_content);
//日期格式,年月日
HSSFCellStyle style_date = wb.createCellStyle();
style_date.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style_date.setDataFormat(df.getFormat("yyyy-MM-dd"));
style_date.setFont(font_content);
//设置为datetime格式
cell.setCellStyle(style_dateTime);
cell.setCellValue(value);