springmvc导出页面上展示的数据到cvs文件

步骤:

一、导出js按钮事件

  $("#logDownload").click(function(e){
    e.preventDefault();
    window.location.href = "downloadInfoList?beginTime="+beginTime+"&endTime="+endTime+
"&returnCompany="+returnCompany+
"&title="+title;
   
    });

注:logDownLoad为按钮的id,downloadInfoList为srpingmvc中controller中相应的方法


二、controller层方法

@RequestMapping(value = "/downloadnfoList", method = { RequestMethod.GET })
public void downloadInfoList(HttpSession session,
HttpServletRequest request, HttpServletResponse response,
@RequestParam String beginTime, @RequestParam String endTime,
@RequestParam String returnCompany,
@RequestParam String title) {
// companyId为登陆后放到session域中的值
int companyId = Integer.parseInt(session.getAttribute("companyId").toString());

// 获取/temp/的绝对路径
String tomcatPath = request.getServletContext().getRealPath(
"/temp/");
Date d = new Date();

//给要导出的csv文件命名
File file = new File(tomcatPath + "/" + d.getTime() + ".csv");
try {
Date begin = null;
Date end = null;

if (beginTime == null || beginTime == "") {
end = DateUtils.parse("2016-01-01 00:00:00");
} else {
begin = DateUtils.parse(beginTime + " 00:00:00");
}

if (endTime == null || endTime == "") {
end = new Date();
} else {
end = DateUtils.parse(endTime + " 23:59:59");
}
// 生成csv文件

//调用service方法生成相应的文件
infoService.saveInfoCsv(file, begin, end, returnCompany, title, companyId,  session
.getAttribute("qrtraceName").toString());
response.addHeader("Content-Disposition", "attachment;filename="
+ d.getTime() + ".csv");
response.addHeader("Content-Length", "" + file.length());
response.setContentType("application/csv;charset=utf-8");
InputStream fis = new BufferedInputStream(new FileInputStream(file));
OutputStream fos = new BufferedOutputStream(
response.getOutputStream());
byte[] buffer = new byte[1024];
while (fis.read(buffer) != -1) {
fos.write(buffer);
buffer = new byte[1024];
}
fos.flush();
fis.close();
fos.close();

if (file.exists()) {
file.delete();
}
} catch (Exception e) {
e.printStackTrace();
if (file.exists()) {
file.delete();
}
}

}

三、service方法

接口:void saveInfoCsv(File file, Date beginTime, Date endTime, String returnCompany,
String title, int companyId, String actor);

接口实现:

@Override
public void saveInfoCsv(File file,Date beginTime, Date endTime, String returnCompany,
String title, int companyId, String actor){

sysManageService.addLog(actor, "导出退货信息", new Date(), companyId);
FileOutputStream out = null;
String sep = ","; 
try { 
out = new FileOutputStream(file);
OutputStreamWriter writer = new OutputStreamWriter(out,"gbk");
writer.write("图书名称");
writer.write(sep); 
writer.write("退货商"); 
writer.write(sep); 
writer.write("退货时间");
writer.write(sep); 
writer.write("退货数量");
writer.write(sep); 
//换行
writer.write(System.getProperty("line.separator")); 
//根据条件获取要导出的数据
List<InfoDTO> list =
 infoDao.getListInfoByConditions(beginTime, endTime, title, returnCompany, companyId);
for(InfoDTO dto : list){
writer.write("\"\t"+dto.getTitle().replaceAll("\"", "\"\"")+"\"");
writer.write(sep); 
writer.write("\"\t"+dto.getReturnCompany().replaceAll("\"", "\"\"")+"\"");
writer.write(sep); 
if(dto.getReturnDate()!=null ){
writer.write("\t"+dto.getReturnDate().toString());
}else{
writer.write("");
}
writer.write(sep); 
writer.write("\"\t"+dto.getReturnMount().toString()+"\"");
//writer.write(sep); 
//每循环完一次则换行一次
writer.write(System.getProperty("line.separator"));
}

writer.flush(); 
writer.close();
}catch(Exception e){
e.printStackTrace();
}

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值