jsp
<button id="js-export" type="button" class="btn blue">导出Excel</button>
js
<script>
$("#js-export").click(function(){
var siteName = $("#siteName").val();//施工名称
if(siteName!=""&& siteName!=undefined){
siteName=siteName.replace(/\s*/g,"");
siteName =encodeURI(encodeURI(siteName));
}
console.log(siteName);
var type=$("#type option:selected").val();//施工名称
var projectManager=$("#pm option:selected").val();//项目经理
console.log(projectManager);
var during = $("#during").val();//时间范围
var companyA = $("#companyA_id").val();//负责单位id
var projectState=$("#projectState option:selected").val();//项目状态
window.location.href="export.action?siteName="+siteName+"&type="+type+"&projectManager="+projectManager+"&during="+during+"&companyA="+companyA+"&projectState="+projectState
});
</script>
导出Excel工具类
public class ExcelUtil {
/**
* 导出Excel
* @param sheetName sheet名称
* @param title 标题
* @param values 内容
* @param wb HSSFWorkbook对象
* @param columnWidth 列宽
* @return
*/
public static HSSFWorkbook getHSSFWorkbook(String sheetName,String[] title,String[][] values, HSSFWorkbook wb){
// 第一步,创建一个HSSFWorkbook,对应一个Excel文件
if(wb == null){
wb = new HSSFWorkbook();
}
// 设置标题样式
HSSFCellStyle titleStyle = wb.createCellStyle();
// 设置单元格边框样式
titleStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框 细边线
titleStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);// 下边框 细边线
titleStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框 细边线
titleStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框 细边线
// 设置单元格对齐方式
titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中
titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中
// 设置字体样式
Font titleFont = wb.createFont();
titleFont.setFontHeightInPoints((short) 15);// 字体高度
titleFont.setFontName("黑体");// 字体样式
titleStyle.setFont(titleFont);
// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName);
sheet.setColumnWidth((short) 0, (short) 8500);// 设置列宽
sheet.setColumnWidth((short) 1, (short) 2500);// 设置列宽
sheet.setColumnWidth((short) 2, (short) 5500);// 设置列宽
sheet.setColumnWidth((short) 3, (short) 2500);// 设置列宽
sheet.setColumnWidth((short) 4, (short) 5000);// 设置列宽
sheet.setColumnWidth((short) 5, (short) 9500);// 设置列宽
// 第三步,在sheet中添加表头第0行
HSSFRow row = sheet.createRow(0);
HSSFCell sequenceCell = row.createCell(0);
// cell列 从0开始 第一列添加序号
sequenceCell.setCellValue("序号");
sequenceCell.setCellStyle(titleStyle); //单元格引用样式
sheet.autoSizeColumn(20);// 自动设置宽度
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
// 设置数据边框
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
// 设置居中样式
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中
// 设置数据字体
Font dataFont = wb.createFont();
dataFont.setFontHeightInPoints((short) 12);// 字体高度
dataFont.setFontName("黑体"); // 字体
style.setFont(dataFont);
// style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
//声明列对象
HSSFCell cell = null;
//创建标题
for(int i=0;i<title.length;i++){
cell = row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
//创建内容
for(int i=0;i<values.length;i++){
row = sheet.createRow(i + 1);
for(int j=0;j<values[i].length;j++){
//将内容按顺序赋给对应的列对象
row.createCell(j).setCellValue(values[i][j]);
}
}
return wb;
}
}
controller层
/**
* 导出Excel表
* @param request
* @param response
* @param map
* @throws Exception
*/
@RequestMapping("export")
@ResponseBody
public void export(HttpServletRequest request,HttpServletResponse response,ModelMap modelmap) throws Exception {
//获取数据
UserInfo user = UserHolder.getCurrentUser();
Map<String, Object> map=new HashMap<String,Object>();
String companyA=StringUtils.trimToEmpty((String)request.getParameter("companyA"));
System.out.println("负责单位为-----------------"+companyA);
map.put("companyA", companyA);
String during=StringUtils.trimToEmpty((String)request.getParameter("during"));
String startTime="";
String endTime="";
if (during!="") {
String[] split = during.split(" - ");
System.out.println(split.length);
startTime=split[0];
endTime=split[1];
}
map.put("startTime", startTime);
map.put("endTime", endTime);
String type=StringUtils.trimToEmpty((String)request.getParameter("type"));
String siteName=StringUtils.trimToEmpty((String)request.getParameter("siteName"));
if (siteName!=""&&siteName!=null) {
siteName = URLDecoder.decode(siteName, "UTF-8");
}
System.out.println("siteName=="+siteName);
String projectState=StringUtils.trimToEmpty((String)request.getParameter("projectState"));
String projectManager=StringUtils.trimToEmpty((String)request.getParameter("projectManager"));
map.put("type", type);
map.put("siteName", siteName);
map.put("projectState", projectState);
map.put("projectManager", projectManager);
System.out.println("类型为-----------------"+type);
System.out.println("projectState-----------------"+projectState);
System.out.println("projectManager-----------------"+projectManager);
if (UserHolder.getCurrentRoles().contains("004")) {
map.put("companyA", user.getDeptId());
}
if (UserHolder.getCurrentRoles().contains("005")) {
map.put("userid", user.getId());
map.put("companyA", user.getDeptId());
}
if (UserHolder.getCurrentRoles().contains("006")) {
map.put("companyA", user.getDeptId());
}
List<Site> list = siteService.AllSiteList(map);
System.out.println(list.size());
//excel标题
String[] title = {"施工名称","施工类型","负责单位","项目状态","项目经理","开始时间-结束时间"};
//excel文件名
String fileName = "施工现场管理"+System.currentTimeMillis()+".xls";
//sheet名
String sheetName = "施工现场管理";
String[][] content = new String[list.size()][];
for (int i = 0; i < list.size(); i++) {
content[i] = new String[title.length];
Site site = list.get(i);
content[i][0] = site.getSiteName();//施工名称
content[i][1] = site.getType_text();//施工类型
content[i][2] = site.getCompanyA_text();//负责单位
content[i][3] = site.getProjectState_text();//项目状态
content[i][4] = site.getProjectManager_text();//项目经理
Date begin_date = site.getBegin_date();
Date end_date = site.getEnd_date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String begin_date1 = sdf.format(begin_date);
String end_date1 = sdf.format(end_date);
content[i][5] = begin_date1+"---"+end_date1;//开始时间-结束时间
}
//创建HSSFWorkbook
HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);
//响应到客户端
try {
this.setResponseHeader(response, fileName);
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//发送响应流方法
public void setResponseHeader(HttpServletResponse response, String fileName) {
try {
try {
fileName = new String(fileName.getBytes(),"ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
} catch (Exception ex) {
ex.printStackTrace();
}
}
```