zoukankan      html  css  js  c++  java
  • poi excel 导出

    项目使用的是jeecg开源框架(springmvc+spring+hibernate+。。。。。。等)此代码仅供参考!如有更好的意见或建议可留言。
    创建excel大致分这几步:
    1、创建HSSFWorkbook对象(也就是excel文档对象)

    2、通过HSSFWorkbook对象创建sheet对象(也就是excel中的sheet)

    3、通过sheet对象创建HSSFROW对象(row行对象)
    4、通过HSSFROW对象创建列cell并set值(列名)
    controller 层

    /**
    * excel自定义导出
    * @param hAqscTieupsummary
    * @param request
    * @param response
    * @param dataGrid
    * @param modelMap
    * @return
    */
    @SuppressWarnings("deprecation")
    @RequestMapping(params = "exportEXL")
    public String exportEXL(HAqscTieupsummaryEntity hAqscTieupsummary,
    HttpServletRequest request, HttpServletResponse response,
    DataGrid dataGrid, ModelMap modelMap) {
    try {
    String dateType = "yyyy";
    SimpleDateFormat df = new SimpleDateFormat(dateType);// 设置日期格式
    SimpleDateFormat df1 = new SimpleDateFormat("yyyy.MM.dd");// 设置日期格式
    // 创建HSSFWorkbook对象(excel的文档对象)
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFRow row = null;
    HSSFCell cell = null;
    // 建立新的sheet对象(excel的表单) 并设置sheet名字
    HSSFSheet sheet = wb.createSheet("占压管线台账信息");
    sheet.setDefaultRowHeightInPoints(30);// 设置缺省列高sheet.setDefaultColumnWidth(20);//设置缺省列宽
    //----------------标题样式---------------------
    HSSFCellStyle titleStyle = wb.createCellStyle(); //标题样式
    titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    Font ztFont = wb.createFont();
    ztFont.setItalic(false); // 设置字体为斜体字
    ztFont.setColor(Font.COLOR_NORMAL); // 将字体设置为“红色”
    ztFont.setFontHeightInPoints((short)16); // 将字体大小设置为18px
    ztFont.setFontName("宋体"); // 将“宋体”字体应用到当前单元格上
    ztFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //加粗
    // ztFont.setUnderline(Font.U_DOUBLE); // 添加(Font.U_SINGLE单条下划线/Font.U_DOUBLE双条下划线)
    // ztFont.setStrikeout(true); // 是否添加删除线
    titleStyle.setFont(ztFont);
    //-------------------------------------------
    //----------------二级标题格样式----------------------------------
    HSSFCellStyle titleStyle2 = wb.createCellStyle(); //表格样式
    titleStyle2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    titleStyle2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    Font ztFont2 = wb.createFont();
    ztFont2.setItalic(false); // 设置字体为斜体字
    ztFont2.setColor(Font.COLOR_NORMAL); // 将字体设置为“红色”
    ztFont2.setFontHeightInPoints((short)11); // 将字体大小设置为18px
    ztFont2.setFontName("宋体"); // 字体应用到当前单元格上
    ztFont2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //加粗
    // ztFont.setUnderline(Font.U_DOUBLE); // 添加(Font.U_SINGLE单条下划线/Font.U_DOUBLE双条下划线)
    // ztFont.setStrikeout(true); // 是否添加删除线
    titleStyle2.setFont(ztFont2);
    //----------------------------------------------------------
    //----------------单元格样式----------------------------------
    HSSFCellStyle cellStyle = wb.createCellStyle(); //表格样式
    cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
    cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
    cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
    cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
    Font cellFont = wb.createFont();
    cellFont.setItalic(false); // 设置字体为斜体字
    cellFont.setColor(Font.COLOR_NORMAL); // 将字体设置为“红色”
    cellFont.setFontHeightInPoints((short)10); // 将字体大小设置为18px
    cellFont.setFontName("宋体"); // 字体应用到当前单元格上
    // cellFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    cellStyle.setFont(cellFont);
    cellStyle.setWrapText(true);//设置自动换行
    //----------------------------------------------------------
    // ----------------------创建第一行---------------
    // 在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
    row = sheet.createRow(0);
    // 创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
    cell = row.createCell(0);
    // 合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
    sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 19));
    // 设置单元格内容
    cell.setCellValue("占压城市地下管线、输油气管道、化工产品管道违法违规建设汇总表");
    cell.setCellStyle(titleStyle);
    // ----------------------------------------------

    // ------------------创建第二行(单位、填表日期)---------------------
    row = sheet.createRow(1); // 创建第二行
    cell = row.createCell(0);
    cell.setCellValue("填报单位名称(盖章): ");
    cell.setCellStyle(titleStyle2);
    sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 3));
    cell = row.createCell(4);
    sheet.addMergedRegion(new CellRangeAddress(1, 1, 4, 5));
    TSBaseUser tb = ResourceUtil.getSessionUserName(); //获取当前登录用户信息
    String uid = tb.getId();
    String deptId = userDao.getDeptId(uid);
    String deptName = userDao.getDeptName(deptId);
    cell.setCellValue(deptName);
    // cell.setCellValue("*****");
    cell.setCellStyle(titleStyle2);
    cell = row.createCell(13); // 填表时间
    sheet.addMergedRegion(new CellRangeAddress(1, 1, 13, 16));
    cell.setCellValue("填表时间:"+df1.format(new Date()));
    cell.setCellStyle(titleStyle2);
    // HSSFCell cell14 = row.createCell(15); // 填表时间
    // cell14.setCellValue();
    // cell14.setCellValue("2017.11.30");
    // cell14.setCellStyle(titleStyle2);
    // ----------------------------------------------

    // ------------------创建表头start---------------------
    row = sheet.createRow(2); // 创建第三行
    sheet.addMergedRegion(new CellRangeAddress(2, 3, 0, 0));
    cell = row.createCell(0);
    cell.setCellValue("序号");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(2, 3, 1, 1));
    cell = row.createCell(1);
    cell.setCellValue("隐患等级评定");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(2, 3, 2, 2));
    cell = row.createCell(2);
    cell.setCellValue("隐患名称");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(2, 2, 3, 5));
    cell = row.createCell(3);
    cell.setCellValue("位置描述");
    cell.setCellStyle(cellStyle);

    cell = row.createCell(4);
    cell.setCellStyle(cellStyle);
    cell = row.createCell(5);
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(2, 2, 6, 10));
    cell = row.createCell(6);
    cell.setCellValue("管线情况");
    cell.setCellStyle(cellStyle);

    cell = row.createCell(7);
    cell.setCellStyle(cellStyle);
    cell = row.createCell(8);
    cell.setCellStyle(cellStyle);
    cell = row.createCell(9);
    cell.setCellStyle(cellStyle);
    cell = row.createCell(10);
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(2, 2, 11, 13));
    cell = row.createCell(11);
    cell.setCellValue("占压物情况");
    cell.setCellStyle(cellStyle);

    cell = row.createCell(12);
    cell.setCellStyle(cellStyle);
    cell = row.createCell(13);
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(2, 2, 14, 14));
    cell = row.createCell(14);
    cell.setCellValue("占压物用途");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(2, 3, 15, 15));
    cell = row.createCell(15);
    cell.setCellValue("已采用的安全防护措施");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(2, 3, 16, 16));
    cell = row.createCell(16);
    cell.setCellValue("备注");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(2, 3, 17, 17));
    cell = row.createCell(17);
    cell.setCellValue("联系人电话");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(2, 3, 18, 18));
    cell = row.createCell(18);
    cell.setCellValue("是否已和区管委和供热办联系");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(2, 3, 19, 19));
    cell = row.createCell(19);
    cell.setCellValue("是否采取防范措施");
    cell.setCellStyle(cellStyle);

    //--------------------------- 创建第四行--------------------
    row = sheet.createRow(3);
    sheet.addMergedRegion(new CellRangeAddress(3, 3, 3, 3));
    cell = row.createCell(3);
    cell.setCellValue("所在区县");
    cell.setCellStyle(cellStyle);

    cell = row.createCell(0);
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(3, 3, 4, 4));
    cell = row.createCell(4);
    cell.setCellValue("所在街道");
    cell.setCellStyle(cellStyle);

    cell = row.createCell(1);
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(3, 3, 5, 5));
    cell = row.createCell(5);
    cell.setCellValue("详细地址");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(3, 3, 6, 6));
    cell = row.createCell(6);
    cell.setCellValue("管线建成时间");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(3, 3, 7, 7));
    cell = row.createCell(7);
    cell.setCellValue("管线埋深");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(3, 3, 8, 8));
    cell = row.createCell(8);
    cell.setCellValue("管径");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(3, 3, 9, 9));
    cell = row.createCell(9);
    cell.setCellValue("管线压力等级");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(3, 3, 10, 10));
    cell = row.createCell(10);
    cell.setCellValue("占压管线长度");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(3, 3, 11, 11));
    cell = row.createCell(11);
    cell.setCellValue("占压单位(个人)名称");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(3, 3, 12, 12));
    cell = row.createCell(12);
    cell.setCellValue("占压物建成时间");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(3, 3, 13, 13));
    cell = row.createCell(13);
    cell.setCellValue("占压物面积(平方米)");
    cell.setCellStyle(cellStyle);

    sheet.addMergedRegion(new CellRangeAddress(3, 3, 14, 14));
    cell = row.createCell(14);
    cell.setCellValue("经营、出租、自用、居住");
    cell.setCellStyle(cellStyle);

    cell = row.createCell(15);
    cell.setCellStyle(cellStyle);
    cell = row.createCell(16);
    cell.setCellStyle(cellStyle);
    cell = row.createCell(17);
    cell.setCellStyle(cellStyle);
    cell = row.createCell(18);
    cell.setCellStyle(cellStyle);
    cell = row.createCell(19);
    cell.setCellStyle(cellStyle);
    //-------------------------表头end---------------------
    CriteriaQuery cq = new CriteriaQuery(HAqscTieupsummaryEntity.class,
    dataGrid);
    org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq,
    hAqscTieupsummary, request.getParameterMap());
    List<HAqscTieupsummaryEntity> hAqscTieupsummarys = this.hAqscTieupsummaryService
    .getListByCriteriaQuery(cq, false);
    for (int i = 0; i < hAqscTieupsummarys.size(); i++) { //向表格插入数据
    List<Object> data = new ArrayList<>(); //将前台传来的数据存入到list中
    // System.out.println(hAqscTieupsummarys.get(i).getSeqNum());
    HAqscTieupsummaryEntity entity = hAqscTieupsummarys.get(i);
    data.add(entity.getSeqNum());
    String yhjb = entity.getYhDjpd();
    String hyjb = dao.getHyjb(yhjb);
    data.add(hyjb); //隐患级别
    data.add(entity.getYhName());
    String countryName = dao.getCountryByCode(entity.getAtcounty()); //区县
    data.add(countryName);
    String code = entity.getAtdistrict();
    String streetName = dao.getStreetByCode(code); //街道
    data.add(streetName);
    data.add(entity.getAddress());
    Date buildtime = entity.getPipelineBuildtime();
    if (buildtime!=null) {
    String format = df.format(buildtime);
    data.add(format);
    }else{
    data.add("");
    }
    data.add(entity.getPipelineDepth());
    data.add(entity.getPipeSize());
    data.add(entity.getPipelinePr());
    data.add(entity.getTppipelineLength());
    data.add(entity.getTieupName());
    Date goodsBuildtime = entity.getTieupgoodsBuildtime();
    if (buildtime!=null) {
    String format = df.format(goodsBuildtime);
    data.add(format);
    }else{
    data.add("");
    }
    data.add(entity.getTieupgoodsArea());
    String useType = entity.getTieupgoodsUse();
    data.add(dao.getUseType(useType));
    data.add(entity.getUseSecuritymeasures());
    data.add(entity.getRemark());
    data.add(entity.getTelephone());
    data.add(dao.getIsContact(entity.getIsContact()));
    data.add(entity.getIsUsesecuritymeasures());
    int rowNum = 4+i; //从第四行开始
    row = sheet.createRow(rowNum);
    for (int j = 0; j < data.size(); j++) { //将数据添加到单元格中
    // System.out.println(data.get(j));
    sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, j, j));
    cell = row.createCell(j);
    cell.setCellValue(""+data.get(j)+"");
    cell.setCellStyle(cellStyle);
    }
    }

    // 输出Excel文件
    OutputStream output = response.getOutputStream();
    response.reset();
    response.setHeader("Content-disposition",
    "attachment; filename=details.xls"); //filename = 文件名
    response.setContentType("application/msexcel");
    wb.write(output);
    output.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return null;
    }

  • 相关阅读:
    第七十四节,css边框与背景
    php中strlen和{}的效率对比
    for循环++i效率
    php优化技巧
    mysql中group_concat函数用法
    mysql引擎互转问题
    array_column php 函数
    php-mysql结果集函数比较
    javaweb 要学习的东西
    Java 泛型和类型安全的容器
  • 原文地址:https://www.cnblogs.com/feiwenstyle/p/11398659.html
Copyright © 2011-2022 走看看