思路 :
將需要導出的數據存放在一個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();
}
}