欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaWeb中使用poi进行excel的自定义模板下载

程序员文章站 2022-07-13 12:35:01
...

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
这篇文章我以读写excel2003为例,若想操作2007以及上的excel,请使用poi-ooxml

1.先添加jar包依赖

<dependency><!-- excel2003 -->
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.8</version>5
</dependency>
<dependency><!-- excel2007以上 -->
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.8</version>
</dependency>

2.代码编写

public void download(HttpServletRequest request,HttpServletResponse response) throws Exception{
    String title[] = new String[]{"标题1", "标题2", "标题3"};//excel第一行标题内容
    HSSFWorkbook workbook = new HSSFWorkbook();
    HSSFSheet sheet = workbook.createSheet("导入模板");//工作薄名称 
    sheet.setDefaultColumnWidth(18);//列宽

    // 樣式
    HSSFCellStyle headStyle = workbook.createCellStyle();
    headStyle.setFillForegroundColor(HSSFColor.GREY_50_PERCENT.index);
    headStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中
    headStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP); // 垂直居中
    headStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框
    headStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框
    headStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框
    headStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框
    HSSFDataFormat format = workbook.createDataFormat();  
    headStyle.setDataFormat(format.getFormat("@"));  //设置单元格格式为常规
    //设置头格式(第一行)
    HSSFCellStyle columnHeadStyle = workbook.createCellStyle();
    columnHeadStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中
    columnHeadStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框
    columnHeadStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框
    columnHeadStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框
    columnHeadStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框

    int rowNO = 0;
    HSSFRow row = null;
    HSSFCell cell = null;
    row = sheet.createRow(rowNO++);
    row.setHeight((short) 400);
    //两个for循环,生成execl的标题
    for (int i = 0; i < title.length; i++) {
        cell = row.createCell(i);
        cell.setCellValue(title[i]);
        cell.setCellStyle(headStyle);
    }

    String fileName = "导入模板.xls";//excel文件名
    response.setContentType("application/download;charset=UTF-8");//告诉浏览器返回文件下载
    response.setHeader("Content-disposition", "attachment;filename=\""
            + new String(fileName.getBytes("UTF-8"), "ISO8859_1") + "\"");//**文件下载保存框
    OutputStream out = response.getOutputStream();
    workbook.write(out);
    out.close();
}

总结:HSSFWorkbook某种意义上就是一个代码中的excel,我们对它的操作就是对excel的操作,createCellStyle()方法返回单元格的样式设计入口,关于其他excel的操作在api文档会有很多的解释,API网址