效果图区:
代码区:
- 前端代码,只提供点击事件中的内容;
//"导出Execl"按钮点击事件
$("#export").click(function(){
var form = $("<form>");
$('body').append(form);
form.attr('style','display:none');
form.attr('target','');
form.attr('method','post');
form.attr('action','${context_path}/ptsp/export');//下载文件的请求路径
//对应查询条件的开始时间
var input1 = $('<input>');
input1.attr('type','hidden');
input1.attr('name','spmcStr');
input1.attr('value',$("#spmcStr").val());
form.append(input1);
//对应查询条件的结束时间
var input2 = $('<input>');
input2.attr('type','hidden');
input2.attr('name','dpmcStr');
input2.attr('value',$("#dpmcStr").val());
form.append(input2);
//对应查询条件的店铺名称
var input3 = $('<input>');
input3.attr('type','hidden');
input3.attr('name','beginTime');
input3.attr('value',$("#beginTime").val());
form.append(input3);
//对应查询条件的商品名称
var input4 = $('<input>');
input4.attr('type','hidden');
input4.attr('name','endTime');
input4.attr('value',$("#endTime").val());
form.append(input4);
form.submit();
});
- 后端代码,比较常用的ssm结构;
/**
* <p>Description: 导出Excel文件</p>
* @param response
* @param request
* @param ptsp 页面对象参数
* @author wjt
* @date 2018年7月25日
*/
@RequestMapping("/export")
public void export(HttpServletResponse response,HttpServletRequest request,LptPtsp ptsp){
Map<String,Object> params = new HashMap<String,Object>();
String dpmcs = ptsp.getDpmcStr();
String spmcs = ptsp.getSpmcStr();
params.put("beginTime", ptsp.getBeginTime());
params.put("endTime", ptsp.getEndTime());
params.put("dpmcs", ptsp.getDpmcs());
params.put("spmcs", ptsp.getSpmcs());
//返回的数据集合,业务层及持久层代码就不展示了,主要就是根据条件返回对象实体.
List<LptPtsp> ptsps = lptDpSpService.findPtspListNoTPage(params);
//返回结构后,调用ExcelUtils公共类完成导出.
ExcelUtils.exportPtSpExcel(response,request,ptsps);
}
- ExcelUtils公共类代码
package com.chw.system.util;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.chw.model.lpt.LptPtsp;
public class ExcelUtils {
/**
* 创建excel
* @param model
* @author wjt
* @serialData 2014-11-13
*/
public static void CreateExcel(String filepath,String fileName, String[] title,HashMap<String, String []> hashmap,HttpServletResponse response){
// 第一步,创建 工作簿 webbook
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(fileName.substring(0, fileName.indexOf("_")+1));
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow((int) 0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
HSSFCell cell = null;
for (int k = 0; k < title.length; k++) {// 添加标题行
cell = row.createCell(k);
cell.setCellValue(title[k]);// 给单元格赋值
sheet.setColumnWidth((short) k,5000);
}
// 第五步,读取数据 插入Excel
int i =0;
Iterator<Entry<String, String []>> iter = hashmap.entrySet().iterator();
while(iter.hasNext()){
Map.Entry<String, String []> info= iter.next();
row = sheet.createRow(i+1);
row.createCell(0).setCellValue(i+1);
for (int j = 0; j < info.getValue().length; j++){
row.createCell(j+1).setCellValue(info.getValue()[j]);
}
i++;
}
try{
//第六步 保存临时文件
FileOutputStream fout = new FileOutputStream(filepath+fileName);
wb.write(fout);
fout.close();
//第八步 下载文件
downLoad(filepath,fileName,response, false);
}catch(Exception e) {
e.printStackTrace();
}finally {
// 第九步 删除临时文件
File file = new File(filepath+fileName);
if (file.exists()) {
file.delete();
}
}
}
/**
* 获取导出路径
* @param request
* @return
*/
@SuppressWarnings("deprecation")
private static String getFilePath(HttpServletRequest request){
String filePath =request.getRealPath("/");//导出excel路径
return filePath;
}
private static String getFileName(String filename){
String rs = filename + "_" + getCurrDate()+ ".xls"; // 文件 加上时间戳,以防文件名重复
return rs;
}
// 获取当前时间
private static String getCurrDate() {
GregorianCalendar gc = new GregorianCalendar();
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
df.setTimeZone(gc.getTimeZone());
return df.format(new java.util.Date());
}
private static void downLoad(String filePath,String filename,HttpServletResponse response,boolean isOnLine) throws Exception {
File f = new File(filePath+filename);// 获取文件 具体地址
if (!f.exists()) {
response.sendError(404, "File not found!");
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[12288];// 12M大小的数组
int len = 0;
response.reset(); // 非常重要
if (isOnLine) { // 在线打开方式
URL u = new URL("file:///" + filePath+filename);
response.setContentType(u.openConnection().getContentType());
response.setHeader("Content-Disposition","inline; filename=" + f.getName());
} else { // 纯下载方式
String ffname = new String(filename.getBytes(), "iso8859-1");
response.setContentType("application/vnd.ms-excel;charset=gbk");
response.setHeader("Location", ffname);
response.setHeader("Content-Disposition", "attachment; filename="+ ffname);
}
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0)
out.write(buf, 0, len);
br.close();
out.close();
out.flush();
}
/**
* <p>Description: 导出平台商品Excel</p>
* @param response
* @param request
* @author wjt add
* @param ptsps
* @date 2018年7月24日
*/
public static void exportPtSpExcel(HttpServletResponse response, HttpServletRequest request, List<LptPtsp> ptsps) {
String filepath = getFilePath(request);
String fileName = getFileName("平台商品统计信息");
String[] title = new String[]{"序号","店铺名称","企业名称","商品名称","销量","价格(元)","金额(元)","退货数量","退款金额(元)","实际销量","实际金额(元)","返现比例"};
//查询结果list,封装在Map里 ,以便 导出Excel公用
HashMap<String, String []> hashmap = new HashMap<String, String []>();
if (CheckUtils.listIsNotNull(ptsps)) {
for (LptPtsp ptsp : ptsps) {
String[] str = new String[]{ptsp.getDpmc(),ptsp.getQymc(),ptsp.getSpmc(),ptsp.getSl(),ptsp.getDj(),ptsp.getJe(),ptsp.getSpsl()
,ptsp.getTkje(),ptsp.getSjsl(),ptsp.getSjje(),ptsp.getJxsRate()};
hashmap.put(ptsp.getDpspid(), str);
}
}
//执行导出
CreateExcel(filepath,fileName,title,hashmap,response);
}
}