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();
}
});
}