JSP查询结果导出(接上一篇)

来源:互联网 发布:礼德财富怎么样知乎 编辑:程序博客网 时间:2024/06/05 20:31

查询出结果导出,我用的是POI,

将前台的表单传到后台,以LIST的形式传,后台处理list导出为EXCEL代码如下


excel处理类

public class ExcelFileGenerator {  private final int SPLIT_COUNT = 150000; //Excel每个工作簿的行数  private ArrayList fieldName = null; //excel标题数据集  private List fieldData = null; //excel数据内容  private HSSFWorkbook workBook = null;  /**   * 构造器   * @param fieldName 结果集的字段名   * @param data   */  public ExcelFileGenerator(ArrayList fieldName, List fieldData) {    this.fieldName = fieldName;    this.fieldData = fieldData;  }  /**   * 创建HSSFWorkbook对象   * @return HSSFWorkbook   */  public HSSFWorkbook createWorkbook() {  BoardbandHisInfo boardbandHisInfo = new BoardbandHisInfo();    workBook = new HSSFWorkbook();    int rows = fieldData.size();    int sheetNum = 0;    if (rows % SPLIT_COUNT == 0) {      sheetNum = rows / SPLIT_COUNT;    } else {      sheetNum = rows / SPLIT_COUNT + 1;    }    for (int i = 1; i <= sheetNum; i++) {      HSSFSheet sheet = workBook.createSheet("Page " + i);      HSSFRow headRow = sheet.createRow((short) 0);       for (int j = 0; j < fieldName.size(); j++) {        HSSFCell cell = headRow.createCell((short) j);        //添加样式        cell.setCellType(HSSFCell.CELL_TYPE_STRING);        cell.setEncoding(HSSFCell.ENCODING_UTF_16);        //添加样式        //设置所有单元格的宽度        sheet.setColumnWidth((short)j, (short)6000);        //创建样式(使用工作本的对象创建)        HSSFCellStyle cellStyle = workBook.createCellStyle();        //创建字体的对象        HSSFFont font = workBook.createFont();        //将字体加粗        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);        //设置字体的颜色        short color = HSSFColor.RED.index;        font.setColor(color);        //将新设置的字体属性放置到样式中        cellStyle.setFont(font);        if(fieldName.get(j) != null){          cell.setCellStyle(cellStyle);          cell.setCellValue((String) fieldName.get(j));        }else{          cell.setCellStyle(cellStyle);          cell.setCellValue("-");        }      }      for (int k = 0; k < (rows < SPLIT_COUNT ? rows : SPLIT_COUNT); k++) {        HSSFRow row = sheet.createRow((short) (k + 1));        //将数据内容放入excel单元格         boardbandHisInfo =  (BoardbandHisInfo) fieldData.get((i - 1)* SPLIT_COUNT + k);         List rowList = new ArrayList();         rowList.add(boardbandHisInfo.getAccept_city());//地市         rowList.add(boardbandHisInfo.getDealer_name());//受理工作站名称         rowList.add(boardbandHisInfo.getAccept_date());//业务受理时间         rowList.add(boardbandHisInfo.getInnet_name());//接入方式(AD、光纤等)         rowList.add(boardbandHisInfo.getService_id());//业务标识号         rowList.add(boardbandHisInfo.getFirst_name());//客户名称         rowList.add(boardbandHisInfo.getContact_phone());//客户联系电话         rowList.add(boardbandHisInfo.getInstall_address());//安装地址         rowList.add(boardbandHisInfo.getProduct_id());//宽带带宽         rowList.add(boardbandHisInfo.getMonth_fee());//资费价格         rowList.add(boardbandHisInfo.getApply_date());//宽带套餐开始时间         rowList.add(boardbandHisInfo.getInvalid_date());//宽带套餐结束时间        for (int n = 0; n < rowList.size(); n++) {          HSSFCell cell = row.createCell((short) n);          cell.setEncoding(HSSFCell.ENCODING_UTF_16);          if(rowList.get(n) != null){            cell.setCellValue((String) rowList.get(n).toString());          }else{            cell.setCellValue("");          }        }      }    }    return workBook;  }  public void expordExcel(OutputStream os) throws Exception {    workBook = createWorkbook();    workBook.write(os);    os.close();  }}


导出方法:

public void exportExcel(HttpServletRequest request, HttpServletResponse response) throws Exception{System.out.println("开始导出到EXCEL");BoardbandHisInfoMaint boardbandHisInfoMaint = new BoardbandHisInfoMaint();String accept_start_date = request.getParameter("accept_start_date");String accept_end_date = request.getParameter("accept_end_date");String station_kind_str = request.getParameter("station_kind");int station_kind = Integer.parseInt(station_kind_str);List fieldData = new ArrayList();fieldData = boardbandHisInfoMaint.getExportExcelInfo(accept_start_date, accept_end_date, station_kind, request);ArrayList fieldName=getFieldName();    //excel标题数据集String excel="myexcel";    //回去输出流    OutputStream out=response.getOutputStream();    //重置输出流    response.reset();    //设置导出Excel报表的导出形式    response.setContentType("application/vnd.ms-excel");    response.setHeader("Content-Disposition","attachment;filename="+excel+".xls");    ExcelFileGenerator  efg=new ExcelFileGenerator(fieldName, fieldData);    efg.expordExcel(out);    //设置输出形式    System.setOut(new PrintStream(out));    //刷新输出流    out.flush();    //关闭输出流    if(out!=null){      out.close();    }}


0 0