在剛剛工作時就寫過類似的功能,時隔4年有重新用到改功能,真後悔,自己沒有寫在博客上以便查看......a今天略微總結
使用的平臺:
springMVC+Mybatis,要使用的依賴包:
js層:
controller層:
/**
* 導出Excel用戶信息
* @param response
* @param user
*/
@RequestMapping("/exportFile")
public void exportFile(HttpServletResponse response,User user){
List<String> head = new ArrayList<String>();
head.add("賬號");
head.add("暱稱");
head.add("所在學校");
head.add("所在地區");
head.add("用戶類型");
head.add("手機");
head.add("郵箱");
List<List<String>> body = new ArrayList<List<String>>();
String bak1 = getUserBak1();
String bak2 = getUserBak2();
if (bak1.equals(User.bak1_operator)) {
user.setAuthority(bak1);
} else if (!bak1.equals(User.bak1_no)) {
user.setAuthority(bak1);
user.setCountyId(bak2);
if (bak1.equals(User.bak1_schoool)) {
user.setSchoolId(getUserSchoolId());
}
}
List<User> userList = userService.findSelective(user);
for (int i = 0; i < userList.size(); i++) {
List<String> bodyRow = new ArrayList<String>();
User users = userList.get(i);
bodyRow.add(users.getUserCode());
bodyRow.add(users.getNickName());
bodyRow.add(users.getSchoolName());
bodyRow.add(users.getAreaName());
String userType = users.getUserType();
if(User.userType_leader.equalsIgnoreCase(userType)){
userType = "領導";
}else if(User.userType_research.equalsIgnoreCase(userType)){
userType = "教研員";
}else if(User.userType_teachers.equalsIgnoreCase(userType)){
userType = "教師";
}else if(User.userType_students.equalsIgnoreCase(userType)){
userType = "學生";
}
bodyRow.add(userType);
bodyRow.add(users.getPhone());
bodyRow.add(users.getEmail());
body.add(bodyRow);
}
String title = "用戶信息";
HSSFWorkbook wb = ExcelUtil.expExcel(title,head, body);
ExcelUtil.outFile(response,wb);
}
ExcelUtil:
package com.zz.zb.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
* 創建excel並填入數據
* @author David
* @date
* @param head 數據頭
* @param body 主體數據
* @return HSSFWorkbook
*/
public static HSSFWorkbook expExcel(String title,List<String> head, List<List<String>> body) {
//創建一個excel工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
//創建一個sheet工作表
HSSFSheet sheet = workbook.createSheet(title);
//創建第0行表頭,再在這行裏在創建單元格,並賦值
HSSFRow row = sheet.createRow(0);
//每個單元格
HSSFCell cell = null;
for (int i = 0; i < head.size(); i++) {
cell = row.createCell(i);
//設置值
cell.setCellValue(head.get(i));
}
//將主體數據填入Excel中
for (int i = 0; i < body.size(); i++) {
row = sheet.createRow(i + 1);
List<String> bodyRow = body.get(i);
for (int k = 0; k < bodyRow.size(); k++) {
//設置值 從前到後的順序
row.createCell(k).setCellValue(bodyRow.get(k));
}
}
return workbook;
}
/**
* 設定導出文檔的格式並將工作簿輸出到流中
* @param response
* @param wb
*/
public static void outFile(HttpServletResponse response,HSSFWorkbook wb) {
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename=user.xls");
try {
OutputStream ouputStream = response.getOutputStream();
wb.write(ouputStream);
ouputStream.flush();
ouputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}