java poi导出excel小结:设置字体、颜色、单元格日期数字格式、合并单元格等

使用了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);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章