思路 :
将需要导出的数据存放在一个List中
创建一个EXCEL表 注意 XSSFWorkbook 只能操作2007以上的版本,XSSFWorkbook 只能操作2003一下的版本,所以需要的时候可以使用 Workbook创建对象处理兼容性
遍历List 并将每条数据 写入 EXCEL表中
具体代码如下 :
html 页面
导出
js 页面
function download() {
$.messager.confirm('确认', '确认把该搜索结果导出Excel表格 ?', function(r) {
if (r) {
$.messager.progress({
title : '处理中',
msg : '请稍后',
});
$.messager.progress('close');
$.ajax({
url : 'download.html',//后台方法名字
type : 'POST',
data : {
//传入后台的参数,从页面获取
},
success : function(data) {
//加载成功后的操作
}
});
}
});
}
后台代码
Model类 Student
public class Student {
private String name;
private int age;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
处理逻辑,实现功能的类中代码
@RequestMapping(value = "/download.html", method = RequestMethod.POST)
public void download(HttpServletRequest request,HttpServletResponse response) {
// TODO Auto-generated method stub
List list = new ArrayList();//Student是被导出数据的类型,一般是自己写的Model类
XSSFWorkbook excelbook = new XSSFWorkbook(); //创建workBook
XSSFSheet excelSheet = excelbook.createSheet();//创建sheet表
XSSFRow excelRow = excelSheet.createRow(0);//创建行
XSSFCellStyle headerStyle = excelbook.createCellStyle();//设置 居中
headerStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
//接下来是创建 列标题 ,cell的起始值是 0,可创建n个列标题
XSSFCell cell = excelRow.createCell(0);
cell.setCellStyle(headerStyle);//居中
cell.setCellValue("列标题 ");
//接下来遍历List,并写入EXCEL中
for(int i = 0; i < list.size(); i++){
//创建行,行号应从1开始,因为表头行(列标题)占据了第0行
excelRow = excelSheet.createRow(i + 1);
Student t = list.get(i); // List 的起始值是0
//将该行每一列的数据写入,可写n列
cell = excelRow.createCell(0);
cell.setCellValue(t.getName());
}
try {
String filePath = "EXCEL表格导出路径.xls";
writeExcel(response, excelbook, filePath, "文件名");//具体导出的方法
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
具体实现导出EXCEL的方法
//具体导出的方法
private static void writeExcel(HttpServletResponse response, Workbook work,
String filePath, String fileName) throws IOException {
OutputStream outputStream = new FileOutputStream(filePath);
try {
response.setContentType("application/ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename="
.concat(String.valueOf(URLEncoder.encode(fileName + ".xls",
"UTF-8"))));
work.write(outputStream);
} catch (IOException e) {
System.out.println("输出流错误");
e.printStackTrace();
} finally {
outputStream.close();
}
}