springmvc导出页面上展示的数据到cvs文件
2017-01-13 15:58
357 查看
步骤:
一、导出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();
}
}
一、导出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();
}
}
相关文章推荐
- MySql数据导入导出cvs文件命令
- aspx页面中,DataTable中的数据导出到Excel文件中
- SpringMVC4+thymeleaf3的一个简单实例(篇五:页面和MySql的数据交互-展示以及存储)
- 将页面数据导出时设置的文件类型
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
- Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
- MySql数据导入导出cvs文件命令
- SpringMVC4+thymeleaf3的一个简单实例(篇五:页面和MySql的数据交互-展示以及存储)
- springmvc 返回json数据给前台jsp页面展示
- SpringMVC实现页面和java模型的数据交互以及文件上传下载和数据校验
- java操作office和pdf文件页面列表导出cvs,excel、pdf报表.
- java操作office和pdf文件页面列表导出cvs,excel、pdf报表.
- Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
- Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
- SpringMVC+Ajax页面无刷新提交多个文件和数据
- java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
- java操作office和pdf文件页面列表导出cvs,excel、pdf报表.
- MySql数据导出到cvs文件命令
- JavaScript将页面表格数据导出为Excel、CSV格式文件(结合JQuery EasyUI的grid )
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)