POI导出Excel表格:有样式、图片导出

poi版本为3.14

public void excelOutput(){
    try {
        HSSFWorkbook workbook = new HSSFWorkbook();//创建Excel工作簿对象
        HSSFSheet sheet = workbook.createSheet();//在工作簿中创建工作表对象
        workbook.setSheetName(0, "测试");//设置工作表的名称

        HSSFRow row = sheet.createRow(0);//创建第1行

        HSSFCell cell_01 = row.createCell(0);//一行中的第1个单元格
        cell_01.setCellValue("第一个单元格");//给单元格添加内容

        HSSFCell cell_02 = row.createCell(1);//一行中的第2个单元格
        cell_02.setCellValue("第二个单元格");//给单元格添加内容

        String filePath = "D:";//文件保存路径
        String fileName = "测试文件.xlsx";//文件名称
        File xlsFile = new File(filePath,fileName);
        FileOutputStream fos = new FileOutputStream(xlsFile);//创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
        workbook.write(fos);//将文档对象写入文件输出流
        fos.close();//关闭流
        System.out.println("导出完成");
    } catch (Exception e) {
           System.out.println("导出失败");
    }
}

给导出的excel表格添加样式:

//创建单元格的样式
HSSFCellStyle cellStyle = workbook.createCellStyle();//用于设置单元格的显示样式

cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));//设置单元格内容格式。
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置水平对齐样式,水平对其
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//设置单元格垂直对齐方式,居中对齐
cellStyle.setBorderTop(HSSFCellStyle.BORDER_DOUBLE);//设置单元格顶部边框的线条样式
cellStyle.setTopBorderColor(HSSFColor.YELLOW.index);//设置单元格左侧边框颜色

//设置单元格字体
HSSFFont font = workbook.createFont();//创建字体对象
font.setColor(HSSFColor.SKY_BLUE.index);//设置字体颜色
font.setFontHeightInPoints((short) 15);//设置字号大小
font.setFontName("楷体");//设置字体
font.setItalic(true);//是否倾斜
font.setStrikeout(false);//是否带有删除线
font.setUnderline(HSSFFont.U_SINGLE);//设置下划线
cellStyle.setFont(font);//将字体设置添加到单元格样式中。

把设置好的样式,放入单元格中。

cell_02.setCellStyle(cellStyle);//把样式应用到单元格上面,这里是第二个单元格。

合并单元格

HSSFRow row = sheet.createRow(0);//创建第1行
sheet.addMergedRegion(new CellRangeAddress(0,1,0,5));//合并单元格,合并下标为0和1的两行中的小标为0-5的单元格。

上面的两行代码,第二行是合并单元格的代码,第一行是用来表示第二行代码应该摆放的位置。

POI导出图片:

FileInputStream fis = new FileInputStream("D:\\1.jpg");//图片路径
byte[] imgBytes = new byte[fis.available()];
fis.read(imgBytes);
int picIndex = workbook.addPicture(imgBytes, workbook.PICTURE_TYPE_JPEG);//图片格式

HSSFClientAnchor anchor = new HSSFClientAnchor(); //创建显示图片的区域
anchor.setAnchor((short)0, 0, 5, 5, (short)5, 5, 130, 200);

HSSFPatriarch patri = sheet.createDrawingPatriarch();//显示图片
patri.createPicture(anchor , picIndex); 

代码摆放位置:”文件保存路径”上面就可以了。
导出图片时,需要添加一个包:commons-codec-1.10.jar

所有的样式都是有多种的,这里只是列举了一种,其他的可以去poi的api中去看。
如果有多个单元格需要不同的样式,那么就需要创建多个HSSFCellStyle,为其设置不同的样式。
其中合并单元格,如果是要设置边框样式,那么就需要把合并的几个都设置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值