您的位置:首页 > 产品设计 > UI/UE

ssh结合easyui实现导出Excel功能

2018-03-25 21:21 417 查看
jsp界面代码:
{text:'导出',iconCls:'icon-undo',handler:function(){
$("#frm1").attr("src", "${pageContext.request.contextPath}/subarea/exImport");
}},
控制器代码(全部都赋值粘贴,需要操作的只有,查询方法,创建对象,创建标题,循环的地方): @Action(value="exImport")
public void exportExcel() throws Exception {
//第一步查询所有的分区数据
List<BcSubarea> list = subareaService.findAll();//-----//我这个是导出数据库中所有的数据,也可以只导入选中的数据,需要自己写方法
//第二步:使用poi将数据写到excel文件中
//在内存中创建一个excel文件
HSSFWorkbook workbook =new HSSFWorkbook();
//创建一个 标签页
HSSFSheet sheet=workbook.createSheet("分区数据");
//创建标题行
HSSFRow headrow=sheet.createRow(0); //表示在第一行为标题行
headrow.createCell(0).setCellValue("分区编号");        //-------
headrow.createCell(1).setCellValue("开始编号");
headrow.createCell(2).setCellValue("结束编号");
headrow.createCell(3).setCellValue("位置信息");
headrow.createCell(4).setCellValue("省市区");
headrow.createCell(5).setCellValue("关键信息");
for(BcSubarea b:list) {
HSSFRow dataRow=sheet.createRow(sheet.getLastRowNum()+1);
dataRow.createCell(0).setCellValue(b.getSubareaId());
dataRow.createCell(1).setCellValue(b.getStartnum());
dataRow.createCell(2).setCellValue(b.getEndnum());
dataRow.createCell(3).setCellValue(b.getPosition());
dataRow.createCell(4).setCellValue(b.getBcRegion().getName());
dataRow.createCell(5).setCellValue(b.getAddresskey());
}
//第三步:使用输出流进行文件下载(一个流,两个头)
String filename="分区数据.xls";
String contentType=getSession().getServletContext().getMimeType(filename);
ServletOutputStream out=getResponse().getOutputStream();
getResponse().setContentType(contentType);
//获取客户端浏览器类型
filename=encodeChineseDownloadFileName(getRequest(), filename); //(这个方法为自己写的方法,具体看下面一段)
getResponse().setHeader("content-disposition", "attachment;filename="+filename);
workbook.write(out);
out.close();
}encodeChineseDownloadFileName(getRequest(), filename);方法代码(这个复制粘贴就行了,我这个是写在baseAction中的,别的action都继承了这个action): //浏览器兼容
public String encodeChineseDownloadFileName(HttpServletRequest request,String pFileName) throws Exception {
String fileName=null;
String agent=request.getHeader("USER-AGENT");
if(null!=agent) {
if(-1!=agent.indexOf("Firefox")) {
fileName="=?UTF-8?B?"+(new String(org.apache.commons.codec.binary.Base64.encodeBase64(pFileName.getBytes("UTF-8"))))+"?=";
}else if(-1!=agent.indexOf("Chrome")) {
fileName=new String(pFileName.getBytes(),"ISO8859-1");
}else {//IE7+
fileName=java.net.URLEncoder.encode(pFileName,"UTF-8");
fileName=fileName.replace("+", "%20");
}
}else {
fileName=pFileName;
}
return fileName;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: