easyUI导出excel文件 提供下载功能
2015-10-27 10:45
363 查看
实现思路:
1.把数据导入到excel表中,存放在项目upload文件夹下,
2.利用Struts2提供的下载功能把excel表从项目的upload文件夹中下载下来.
3.删除项目中的excel文件.
----------java代码:
private InputStream ist1;
private String fileName;
//导出excel
public String getExcelData(){
OnlineApply onlineApply=new OnlineApply();
onlineApply.setName(getRequest().getParameter("name"));//筛选条件
onlineApply.setStatus(getRequest().getParameter("status"));
onlineApply.setCourseId(getRequest().getParameter("courseId"));
String[] headers={"报名时间","姓名","手机号码"," QQ","报选课程","留言"};//表头
WritableWorkbook wwb;
FileOutputStream fos;
String realPath = ServletActionContext.getServletContext().getRealPath("/upload");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd-HHmmss");//格式化时间输出
String fileName1 = sdf.format(new Date());// 取得当前时间
String fileName2=realPath+"\\"+fileName1+".xls";
fileName=fileName1+".xls";//获取保存的文件名
try {
//获取需要导出的数据 list
List<OnlineApply> list=onlineApplyService.queryOnlineApplyInfo1(onlineApply);
fos = new FileOutputStream(fileName2);
wwb = Workbook.createWorkbook(fos);//创建可写入的Excel工作薄
//创建Excel工作表 (名称,位置)
WritableSheet ws = wwb.createSheet("在线报名表", 0);
// 设置单元格的文字格式
WritableFont wf = new WritableFont(WritableFont.ARIAL, 12,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.BLUE);
WritableCellFormat wcf = new WritableCellFormat(wf); //Format
wcf.setVerticalAlignment(VerticalAlignment.CENTRE);
wcf.setAlignment(Alignment.CENTRE);
ws.setRowView(0, 500);//设置表头行高
//填充表头
for(int i=0;i<headers.length;i++){
ws.addCell(new Label(i+1, 0, headers[i], wcf));
}
// 填充数据的内容
for (int i = 0; i < list.size(); i++) {
OnlineApply onlineApply1 = (OnlineApply) list.get(i);
ws.addCell(new Label(1, i+1, onlineApply1.getApplyTime().toString()));
ws.addCell(new Label(2, i+1, onlineApply1.getName()));
ws.addCell(new Label(3, i+1, onlineApply1.getPhone()));
ws.addCell(new Label(4, i+1, onlineApply1.getQqnumber()));
ws.addCell(new Label(5, i+1, onlineApply1.getApplyCourse()));
ws.addCell(new Label(6, i+1, onlineApply1.getMemberLeave()));
ws.setColumnView(i+1, 14);//设置每列列宽
ws.setRowView(i+1, 300);//设置内容行高
}
ws.setColumnView(1, 20);//设置第一列列宽
ws.setColumnView(6, 60);//设置第六列列宽
wwb.write();//写入excel
wwb.close();//关闭excel工作簿
fos.close();//关闭输出流
//下载
ist1=ServletActionContext.getServletContext().getResourceAsStream("upload/"+fileName);
if (fileName!=null) {//删除服务器上的文件
String realPath1 = ServletActionContext.getServletContext().getRealPath("");
File f = new File(realPath1);
File deleteFile1 = new File(f,fileName);
System.out.println(deleteFile1);
if (deleteFile1 != null) {
deleteFile1.delete();// 删除原有文件
}
}
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
public InputStream getIst1() {
return ist1;
}
public void setIst1(InputStream ist1) {
this.ist1 = ist1;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
---------Struts2配置
<action name="OnlineApplyAction_getExcelData" class="com.zte.wm.action.OnlineApplyAction" method="getExcelData">
<result type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="contentDisposition">attachment;fileName="${fileName}"</param>
<param name="inputName">ist1</param>
<param name="bufferSize">1024</param>
</result>
</action>
注意:提交方式不能用ajax提交,如果有中文筛选条件不能用get提交,只能用post提交,ajax提交无法下载,get提交中文会乱码,或者url被防火墙拦截报500错误。
页面:分页的第二页还有2行数据
![](http://img.blog.csdn.net/20151027113143156?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
下载的excel文件
![](http://img.blog.csdn.net/20151027113337073?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
筛选数据:
![](http://img.blog.csdn.net/20151027113428976?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
excel下载文件
![](http://img.blog.csdn.net/20151027113517074?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
1.把数据导入到excel表中,存放在项目upload文件夹下,
2.利用Struts2提供的下载功能把excel表从项目的upload文件夹中下载下来.
3.删除项目中的excel文件.
----------java代码:
private InputStream ist1;
private String fileName;
//导出excel
public String getExcelData(){
OnlineApply onlineApply=new OnlineApply();
onlineApply.setName(getRequest().getParameter("name"));//筛选条件
onlineApply.setStatus(getRequest().getParameter("status"));
onlineApply.setCourseId(getRequest().getParameter("courseId"));
String[] headers={"报名时间","姓名","手机号码"," QQ","报选课程","留言"};//表头
WritableWorkbook wwb;
FileOutputStream fos;
String realPath = ServletActionContext.getServletContext().getRealPath("/upload");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd-HHmmss");//格式化时间输出
String fileName1 = sdf.format(new Date());// 取得当前时间
String fileName2=realPath+"\\"+fileName1+".xls";
fileName=fileName1+".xls";//获取保存的文件名
try {
//获取需要导出的数据 list
List<OnlineApply> list=onlineApplyService.queryOnlineApplyInfo1(onlineApply);
fos = new FileOutputStream(fileName2);
wwb = Workbook.createWorkbook(fos);//创建可写入的Excel工作薄
//创建Excel工作表 (名称,位置)
WritableSheet ws = wwb.createSheet("在线报名表", 0);
// 设置单元格的文字格式
WritableFont wf = new WritableFont(WritableFont.ARIAL, 12,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.BLUE);
WritableCellFormat wcf = new WritableCellFormat(wf); //Format
wcf.setVerticalAlignment(VerticalAlignment.CENTRE);
wcf.setAlignment(Alignment.CENTRE);
ws.setRowView(0, 500);//设置表头行高
//填充表头
for(int i=0;i<headers.length;i++){
ws.addCell(new Label(i+1, 0, headers[i], wcf));
}
// 填充数据的内容
for (int i = 0; i < list.size(); i++) {
OnlineApply onlineApply1 = (OnlineApply) list.get(i);
ws.addCell(new Label(1, i+1, onlineApply1.getApplyTime().toString()));
ws.addCell(new Label(2, i+1, onlineApply1.getName()));
ws.addCell(new Label(3, i+1, onlineApply1.getPhone()));
ws.addCell(new Label(4, i+1, onlineApply1.getQqnumber()));
ws.addCell(new Label(5, i+1, onlineApply1.getApplyCourse()));
ws.addCell(new Label(6, i+1, onlineApply1.getMemberLeave()));
ws.setColumnView(i+1, 14);//设置每列列宽
ws.setRowView(i+1, 300);//设置内容行高
}
ws.setColumnView(1, 20);//设置第一列列宽
ws.setColumnView(6, 60);//设置第六列列宽
wwb.write();//写入excel
wwb.close();//关闭excel工作簿
fos.close();//关闭输出流
//下载
ist1=ServletActionContext.getServletContext().getResourceAsStream("upload/"+fileName);
if (fileName!=null) {//删除服务器上的文件
String realPath1 = ServletActionContext.getServletContext().getRealPath("");
File f = new File(realPath1);
File deleteFile1 = new File(f,fileName);
System.out.println(deleteFile1);
if (deleteFile1 != null) {
deleteFile1.delete();// 删除原有文件
}
}
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
public InputStream getIst1() {
return ist1;
}
public void setIst1(InputStream ist1) {
this.ist1 = ist1;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
---------Struts2配置
<action name="OnlineApplyAction_getExcelData" class="com.zte.wm.action.OnlineApplyAction" method="getExcelData">
<result type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="contentDisposition">attachment;fileName="${fileName}"</param>
<param name="inputName">ist1</param>
<param name="bufferSize">1024</param>
</result>
</action>
注意:提交方式不能用ajax提交,如果有中文筛选条件不能用get提交,只能用post提交,ajax提交无法下载,get提交中文会乱码,或者url被防火墙拦截报500错误。
页面:分页的第二页还有2行数据
下载的excel文件
筛选数据:
excel下载文件
相关文章推荐
- Permutation Sequence
- UILabel
- UIVisualEffectView - initWithEffect
- UICollectionView的使用和布局方法
- UVA 11538-Chess Queen简单排列组合
- UITableView中用xib实现的cell中的View点击后View消失
- Android更新UI的两种方法——handler与runOnUiThread()
- UITableView中Lable自动换行,Cell自动适应高度
- 【HDOJ】【1005】Number Sequence
- UIBezierPath + bezierPathWithArcCenter
- 苹果在Xcode6中弃用segue的push和model
- String StringBuffer StringBuilder
- JAVA UUID 生成
- Android酷炫实用的开源框架(UI框架)
- VirtualBox Guest Additions
- iOS - UIStatusBar 状态栏设置黑色+白色
- WebService中获取request对象一例
- ActionSheet 显示在 UIWindow,弹出又消失了解决办法
- input 的value值改变事件监听
- input 的value值改变事件监听