此方法为纯java环境下服务端向客户端以EXCEL格式返回所需数据,此方法无框架限制即可在severlet下使用,也可在strus action中使用,适用性广但是比较繁琐。
public class UseExcelAction extends BaseAction {
private IRecordInfoService record;
public String execute() throws Exception {
HttpServletResponse response = (HttpServletResponse)ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest)ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
//获取数据
//...这里获取个list或map数据集即可 Lst list
//设置创建输出流,通过输出流将文件格式设置为Excel文件
OutputStream os = null;
try{
os=response.getOutputStream();
response.reset();
response.setHeader("Content-disposition", "attachment; filename=useCount.xls");//设定输出文件头
response.setContentType("application/vnd.ms-Excel");
// 生成Excel文件
ExcelReport excelreport=new ExcelReport();
//设置表头
String[] titleList={"序号","地市","营业厅","地址","登录情况","选号","增值业务","U惠站 ","手机","总计","有效订单"};
excelreport.touseExcel("xls",titleList,list,os);
//清空输出流
System.setOut(new PrintStream(os));
os.flush();
}catch(Exception e){
e.getStackTrace();
}
finally{
os.close();
}
//这里是ACTION所以返回none
return this.NONE;
}
public IRecordInfoService getRecord() {
return record;
}
public void setRecord(IRecordInfoService record) {
this.record = record;
}
}
public class ExcelReport { //导出操作记录 public void touseExcel(String sheetname,String[] titleList,List<OrgReportBo> list,OutputStream os){ WritableWorkbook book=null; try{ //打开创建excel book=Workbook.createWorkbook(os); // 创建工作表 WritableSheet sheet=book.createSheet(sheetname,0); //创建单元格 for(int i=0;i<titleList.length;i++){ Label lable=new Label(i,0,titleList[i]); //添加标题单元格 sheet.addCell(lable); } for(int i=0;i<list.size();i++){ //第i+1行 Dto rp=(Dto)list.get(i); //这里将数据集中单条数据取出即可,然后循环复制 String[] report={rp.getAsString("NUMBER"), rp.getAsString("REGION_NAME") ,rp.getAsString("ORG_NAME"),rp.getAsString("ADDRESS") ,rp.getAsString("MAIN"),rp.getAsString("MSISDN") ,rp.getAsString("SPSJYY"),rp.getAsString("YOUHUI"),rp.getAsString("PHONE") ,rp.getAsString("COUNT"),rp.getAsString("COUNTS")}; for(int j=0;j<titleList.length;j++){ //第j列 //添加数据单元格 Label lable=new Label(j,i+1,report[j]); sheet.addCell(lable); } } //写入数据 book.write(); }catch(Exception e){ e.printStackTrace(); }finally{ try { book.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
以上