Java 让excel导出大量数据进行分表打成压缩包进行下载
2016-06-06 09:30
519 查看
这段时间有涉及到 关于从前台自己导数据到服务器,然后再把数据导入数据库的操作,当时用了两天多时间才完成这个事情。最近有接到优化数据导出这个功能的一些任务,虽然做得还不是很完善,但也有自己的一些思想在里面。正好这是我第一次发技术博客,也就用这个来作为第一个案例好了。
public String consumeReport() throws IOException {
int excelnum=0;
List<File> srcfile=new ArrayList<File>();
String templateName = "template.xlsx";// Excel模版
URL url = this.getClass().getResource("/");// CarParkAction.class.getResource("/");
String docsPath = url.getPath();
String templatePath = docsPath + templateName;
OrderService orderService = ((OrderService) ContextHolder.getBean("orderServiceImpl"));
List<OrderInfo> list = orderService.findOrderInfoList(orderInfo);
if (list != null) {
System.out.println("*******************有记录,开始导数据");
while(list.size()>excelnum*100000){
ExcelTemplate excel = ExcelTemplate.getInstance().readTemplatePath(
templatePath);
String fileName = orderInfo.getParkId() +"_"+excelnum+ "_ConsumeInfo.xlsx";// 导出Excel文件名
String filePath = docsPath + fileName;
excel.creatNewRow();
excel.createNewCol("停车场ID");
excel.createNewCol("车牌号码");
excel.createNewCol("消费类型");
//excel.createNewCol("支付类型");
excel.createNewCol("消费金额(元)");
excel.createNewCol("开始时间");
excel.createNewCol("结束时间");
excel.createNewCol("消费时间");
for (int i = excelnum*100000; i <=excelnum*100000 + 99999; i++) {
if(list.size()<(i+1)){
break;
}
OrderInfo orderInfoResult=list.get(i);
if(orderInfoResult==null){
break;
}
excel.creatNewRow();
excel.createNewCol(orderInfoResult.getParkId() + "");
excel.createNewCol(orderInfoResult.getCarCode());
if(orderInfoResult.getCostType()!=null){
int costType = orderInfoResult.getCostType();
switch (costType) {
case 1:
excel.createNewCol("包月");
break;
case 2:
excel.createNewCol("云缴费");
break;
case 3:
excel.createNewCol("现金");
break;
case 4:
excel.createNewCol("充值");
break;
default:
excel.createNewCol("其它类型");
break;
}
}else{
excel.createNewCol("其它类型");
}
excel.createNewCol(DateUtils.ftoy(orderInfoResult.getOrderFee(), 100));
excel.createNewCol(DateUtils.dateToString(orderInfoResult
.getStartTime()));
excel.createNewCol(DateUtils.dateToString(orderInfoResult
.getEndTime()));
excel.createNewCol(DateUtils.dateToString(orderInfoResult
.getCreateTime()));
}
excel.writeToFile(filePath);
srcfile.add(new File(filePath));
excelnum++;
}
String fileName = orderInfo.getParkId() +".zip";// 导出Excel文件名
String filePath = docsPath + fileName;
// File zipfile = new File(filePath);
//压缩文件
craeteZipPath(srcfile, filePath,docsPath);
//下载文件
download(filePath, response);
// 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
File filedelect = new File(filePath);
filedelect.delete();
}else {
System.out.println("*******************没有记录");
ResponseUtil.responseJson(response, "300");
}
return null;
}
public String consumeReport() throws IOException {
int excelnum=0;
List<File> srcfile=new ArrayList<File>();
String templateName = "template.xlsx";// Excel模版
URL url = this.getClass().getResource("/");// CarParkAction.class.getResource("/");
String docsPath = url.getPath();
String templatePath = docsPath + templateName;
OrderService orderService = ((OrderService) ContextHolder.getBean("orderServiceImpl"));
List<OrderInfo> list = orderService.findOrderInfoList(orderInfo);
if (list != null) {
System.out.println("*******************有记录,开始导数据");
while(list.size()>excelnum*100000){
ExcelTemplate excel = ExcelTemplate.getInstance().readTemplatePath(
templatePath);
String fileName = orderInfo.getParkId() +"_"+excelnum+ "_ConsumeInfo.xlsx";// 导出Excel文件名
String filePath = docsPath + fileName;
excel.creatNewRow();
excel.createNewCol("停车场ID");
excel.createNewCol("车牌号码");
excel.createNewCol("消费类型");
//excel.createNewCol("支付类型");
excel.createNewCol("消费金额(元)");
excel.createNewCol("开始时间");
excel.createNewCol("结束时间");
excel.createNewCol("消费时间");
for (int i = excelnum*100000; i <=excelnum*100000 + 99999; i++) {
if(list.size()<(i+1)){
break;
}
OrderInfo orderInfoResult=list.get(i);
if(orderInfoResult==null){
break;
}
excel.creatNewRow();
excel.createNewCol(orderInfoResult.getParkId() + "");
excel.createNewCol(orderInfoResult.getCarCode());
if(orderInfoResult.getCostType()!=null){
int costType = orderInfoResult.getCostType();
switch (costType) {
case 1:
excel.createNewCol("包月");
break;
case 2:
excel.createNewCol("云缴费");
break;
case 3:
excel.createNewCol("现金");
break;
case 4:
excel.createNewCol("充值");
break;
default:
excel.createNewCol("其它类型");
break;
}
}else{
excel.createNewCol("其它类型");
}
excel.createNewCol(DateUtils.ftoy(orderInfoResult.getOrderFee(), 100));
excel.createNewCol(DateUtils.dateToString(orderInfoResult
.getStartTime()));
excel.createNewCol(DateUtils.dateToString(orderInfoResult
.getEndTime()));
excel.createNewCol(DateUtils.dateToString(orderInfoResult
.getCreateTime()));
}
excel.writeToFile(filePath);
srcfile.add(new File(filePath));
excelnum++;
}
String fileName = orderInfo.getParkId() +".zip";// 导出Excel文件名
String filePath = docsPath + fileName;
// File zipfile = new File(filePath);
//压缩文件
craeteZipPath(srcfile, filePath,docsPath);
//下载文件
download(filePath, response);
// 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
File filedelect = new File(filePath);
filedelect.delete();
}else {
System.out.println("*******************没有记录");
ResponseUtil.responseJson(response, "300");
}
return null;
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- 小心服务器内存居高不下的元凶--WebAPI服务
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- 运维入门
- PropertyChangeListener简单理解
- 使用Python生成Excel格式的图片
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序