java生成Excel文件,下载

  1. pom引入poi的maven依赖


    org.apache.poi
    poi
    3.15

  2. 单元格的创建,设置样式和赋值

    package com.yl;

    import java.io.FileOutputStream;
    import java.io.IOException;

    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hssf.util.CellRangeAddress;

    @SuppressWarnings("deprecation")
    public class Book1 {

    public static void main(String[] args) {
    HSSFWorkbook workbook = new HSSFWorkbook(); // 创建一个excel
    HSSFSheet sheet = workbook.createSheet("sheet1");// 新建sheet页

    HSSFCellStyle cellStyle = workbook.createCellStyle(); // 新建单元格样式
    cellStyle.setFillForegroundColor((short) 13);// 设置背景色
    cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中
    cellStyle.setWrapText(true);// 设置自动换行

    HSSFRow titleRow = sheet.createRow(0);
    CellRangeAddress cra1 = new CellRangeAddress(0, 0, 0, 5);
    sheet.addMergedRegion(cra1);
    titleRow.createCell(0).setCellValue("haha1");
    CellRangeAddress cra2 = new CellRangeAddress(0, 0, 6, 11);
    sheet.addMergedRegion(cra2);
    titleRow.createCell(6).setCellValue("haha2");
    CellRangeAddress cra3 = new CellRangeAddress(0, 0, 12, 17);
    sheet.addMergedRegion(cra3);
    titleRow.createCell(12).setCellValue("haha3");
    CellRangeAddress cra4 = new CellRangeAddress(0, 0, 18, 23);
    sheet.addMergedRegion(cra4);
    titleRow.createCell(18).setCellValue("haha4");
    CellRangeAddress cra5 = new CellRangeAddress(0, 0, 24, 29);
    sheet.addMergedRegion(cra5);

    titleRow.createCell(24).setCellValue("haha5");

    HSSFRow row = sheet.createRow(1);
    // 参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列
    CellRangeAddress region1 = new CellRangeAddress(1, 5, 0, 5);

    sheet.addMergedRegion(region1);
    HSSFCell cellB1 = row.createCell(0);
    cellB1.setCellValue("B1");

    CellRangeAddress region2 = new CellRangeAddress(1, 5, 6, 11);
    sheet.addMergedRegion(region2);
    // HSSFRow row1 = sheet.createRow(0);//不要再重新创建行数了,这样会把之前填充的数据删除掉!
    HSSFCell cellB2 = row.createCell(6);
    cellB2.setCellValue("B2");

    CellRangeAddress region3 = new CellRangeAddress(1, 5, 12, 17);
    sheet.addMergedRegion(region3);
    // HSSFRow row1 = sheet.createRow(0);//不要再重新创建行数了,这样会把之前填充的数据删除掉!
    HSSFCell cellB3 = row.createCell(12);
    cellB3.setCellValue("B3");

    CellRangeAddress region4 = new CellRangeAddress(1, 5, 18, 23);
    sheet.addMergedRegion(region4);
    // HSSFRow row1 = sheet.createRow(0);//不要再重新创建行数了,这样会把之前填充的数据删除掉!
    HSSFCell cellB4 = row.createCell(18);
    cellB4.setCellValue("B4");

    // 输出到本地
    String excelName = "myExcel.xls";
    FileOutputStream out = null;
    try {
    out = new FileOutputStream(excelName);
    workbook.write(out);
    out.flush();
    out.close();
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (out != null)
    try {
    out.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    out = null;
    System.out.println("导出成功");
    }

    }

    }

  3. 将文件在网页上导出:

    // POI导出流文件下载
    public static void downloadExcel(HSSFWorkbook workbook, HttpServletResponse response, String filename)
    throws IOException {
    try {
    OutputStream out = response.getOutputStream();
    response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
    response.setContentType("application/msexcel;charset=UTF-8");
    workbook.write(out);
    out.flush();
    out.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

posted @ 2017-09-14 19:14  esileme  阅读(3124)  评论(1)    收藏  举报