action处理excel表格

来源:互联网 发布:68端口 编辑:程序博客网 时间:2024/06/06 00:16
1、在action处理类中获取servlet请求相应

  proteted HttpServletResponse getHttpServletResponse(){

  ActionContext= Action.getContext();
  return (HttpServletResponse)ac.get(ServletActionContext.HTTP_RESPONSE);
  }
  HttpServletResponse response=supper.getHttpServletResponse();
  //设置响应头与内容
  String fileName="机构授信表";
  //设置响应相关的设置
  response.setCharacterEncoding("UTF-8");//设置字符编码
  response.setContentType("application/vnd.ms-excel");//设置生成的是EXCEL文件
  //当用户想把请求所得内容存为一个文件的时候,提供一个默认文件名;浏览器会提示保存还是打开,不会有浏览器直接打开
  response.setHeader("Content-disposition","attachment;filename="+new String(fileName.getBytes("gb2321"),"ISO8859-1")+""+".xlsx");
  获取文件输出流
  OutputStream out=response.getOutputStream();
  service.export(out);

2、service中输出文件方法
  private BaseDao baseDao;
  Alt+shift+s; 自动生成get和set方法
  public void export(OutputStream os)throws ServiceException(){
  Session sessin=baseDao.getSessioFactory().getCurrentSession();

  //创建一个Excel文件

  XSSFWorkbook wb=new XSSFWorkbook();

  //创建一个工作薄
  final XSSFSheet workSheet= wb.createSheet("sheet");

  //创建文件的行
  final XSSFWorkSheet head=workSheet.createRow(0);

  //从Hibernate中获取JDBC连接work是一个接口
  session.doWork(new Work){

  public void execute(Connection conn)throws SQLExecption(){

  PreparedStatement st=conn.prepareStatement("sql语句"--select org_id,org_Nm_Cn from org_Info order By org_id);

  ResultSet re=st.executeQuery();

  int i=1;

  while(re.next()){

  final XSSFCell cell=head.createCell(i++);

  cell.serCellValue(re.getString("orgNmCn");
  st.close();
  re.close();
  }
  }
  });
  session.doWork(new Work){
  public void execute(Connection conn) throws SQLExecption(){

  PreparedStatement st=conn.prepareStatement("sql语句-- select org_id, org_nm_cn, crdt_org_id, crdt_org_nm_cn, INTL_CRDT_AMNT, CRDT_RL_F, min_crdt_amnt from v_crdt");

  ResultSet re=st.executeQuery();

  int row=1,column=0;
  String orgNm_cn=null;
  XSSFRow currentRow=null;
  while(re.next()){

  if( !StringUtils.equals(orgNm_cn,re.getString("orgNmCn"))){

  orgNm_cn=re.getString("orgNmCn");
  currentRow=worksheet.createRow(row++);
  currentRow.createCell(0).setValue(orgNm_cn);
  column=1;
}

  String value;
  String ament=re.getString("INTL_CRDT_AMNT");
  if(null==ament){
  value="--";
  }else if(ament=="-1"){
  value="√";
  }else if(ament=="-2"){
  value="--";
  }else{
  value=ament;

  }

  String minCrdt=re.getString("min_crdt_amnt");
  if( !StringUtils.isEmpty(minCrdt) && "-2".equals(mincrdt)){
  vale=value+"("+minCrdt+")";
  }

  curremtRow.creatCell(column++).setCellValue(value);
  }
  st.close();
  re.close();
}
});

}