目标:导出学生成绩表-含学生a 学生b两个sheet
1.//构造sheet中所需数据、sheet名--action中实现
private String templateFileName;//导出用的Excel模板名字,即我们定义的模板Excel名字
private String exportFileName;//导出时显示给客户端的Excel名字,即浏览器显示的Excel名字
public String exportMultiSheetExcel(){
this.exportFileName = "学生成绩表.xlsx";
this.templateFileName="StudentScore.xlsx";
HttpServletResponse response = ServletActionContext.getResponse();
String realpath = ServletActionContext.getServletContext().getRealPath("/");
FileInputStream fis = null;
try {
//读取路径下的Excel模板
fis = new FileInputStream(realpath + "/templates/excel/" + this.templateFileName);
} catch (IOException e) {
e.printStackTrace();
System.out.println("请求流获取错误,请求失败");
}
List<Student> student_list = new ArrayList<Student>();//数据源1
List<Student> student_list2 = new ArrayList<Student>();//数据源2
ArrayList<List> objects = new ArrayList<List>();//添加数据到objects中
objects.add(student_list);
objcects.add(student_list);
List<String> sheetNameList = new ArrayList<String>();//sheet名字列表,和objects大小相等,几个sheet数据源就有几个 //sheet名字
sheetNameList.add("学生a");
sheetNameList.add(学生b);
xxxService.createMultiSheetExcel(fis,response,exportFileName,sheetNameList,objects,"root",student_list2 );
}
2.//调用下载文件方法--service中实现
public void createMultiSheetExcel(FileInputStream inputStream, HttpServletResponse response, String filename, List<String> sheetNamelist,ArrayList<List> objects, String tagname,List<Student> student_list2 ){
OutputStream out = null;
try {
String contentType = "application