public void excelScoreBill(HttpServletRequest request,HttpServletResponse response){
List<String>subjectname=(List<String>)request.getAttribute("subjectname");
List<ScoreBillBean>list=(List<ScoreBillBean>)request.getAttribute("listbean");
String classname2=(String) request.getAttribute("classname");
classname2=StringUtil.convermapnull(classname2);
String filename=classname2+"成绩简表";
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-download");
List<String>sublist=null;
Workbook book=null;
try {
filename =filename+".xls";
book=new HSSFWorkbook();
String agent = (request.getHeader("USER-AGENT")).toLowerCase();
if(agent.indexOf("msie")>-1){
filename = java.net.URLEncoder.encode(filename, "UTF-8");
}else{
filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");
}
response.setContentType("application/msexcel");
response.setHeader("Content-disposition","attachment;filename=\""+filename+"\"");
if(book!=null){
Sheet sheet=book.createSheet("成绩简表");
sheet.setDefaultRowHeight((short) (20*15));
sheet.setDefaultColumnWidth(8);
sheet.setColumnWidth(0, 20*255);
CellStyle style=book.createCellStyle();
style=getStyle(book);
//学号
CellRangeAddress stunum =new CellRangeAddress(0, 1, 0, 0); // 起始行, 终止行, 起始列, 终止列
//姓名
CellRangeAddress stuname =new CellRangeAddress(0, 1, 1, 1); // 起始行, 终止行, 起始列, 终止列
//班级
CellRangeAddress classname =new CellRangeAddress(0, 1, 2, 2); // 起始行, 终止行, 起始列, 终止列
sheet.addMergedRegion(stunum);
sheet.addMergedRegion(stuname);
sheet.addMergedRegion(classname);
Row row=sheet.createRow(0);
Cell cell_0=row.createCell(0);
cell_0.setCellValue("学号");
cell_0.setCellStyle(style);
Cell cell_1=row.createCell(1);
cell_1.setCellValue("姓名");
cell_1.setCellStyle(style);
Cell cell_2=row.createCell(2);
cell_2.setCellValue("班级");
cell_2.setCellStyle(style);
//绘画科目表头
CellRangeAddress subject=null;
Cell subjectcell=null;
for(int i=0;i<subjectname.size();i++){
subject=new CellRangeAddress(0, 0, i*3+3, (i+1)*3+2);
sheet.addMergedRegion(subject);
subjectcell=row.createCell(i*3+3);
subjectcell.setCellStyle(style);
subjectcell.setCellValue(subjectname.get(i));
}
//绘制总分
subject=new CellRangeAddress(0, 0, subjectname.size()*3+3, (subjectname.size()+1)*3+2);
sheet.addMergedRegion(subject);
subjectcell=row.createCell(subjectname.size()*3+3);
subjectcell.setCellStyle(style);
subjectcell.setCellValue("总分");
//第二行
row=sheet.createRow(1);
for(int i=0;i<subjectname.size()*3+6;i++){
if(i>2){
subjectcell=row.createCell(i);
subjectcell.setCellStyle(style);
if(i%3==0){
subjectcell.setCellValue("分数");
}else if(i%3==1){
subjectcell.setCellValue("班名");
}else if(i%3==2){
subjectcell.setCellValue("校名");
}
}
}
Row r1=sheet.getRow(0);
Cell initcell=null;
for(int i=0;i<(subjectname.size()+2)*3;i++){
if(r1.getCell(i)==null){
initcell=r1.createCell(i);
initcell.setCellStyle(style);
}
}
Row r2=sheet.getRow(1);
for(int i=0;i<(subjectname.size()+2)*3;i++){
if(r2.getCell(i)==null){
initcell=r2.createCell(i);
initcell.setCellStyle(style);
}
}
ScoreBillBean bean=null;
Cell temcell=null;
int cindex=0;
for(int i=0;i<list.size();i++){
cindex=0;
bean=list.get(i);
row=sheet.createRow(i+2);
temcell=row.createCell(cindex);//学号
temcell.setCellStyle(style);
temcell.setCellValue(bean.getStudentnum());
cindex++;
temcell=row.createCell(cindex);//姓名
temcell.setCellStyle(style);
temcell.setCellValue(bean.getStudentname());
cindex++;
temcell=row.createCell(cindex);//班级
temcell.setCellStyle(style);
temcell.setCellValue(bean.getClassname());
cindex++;
for(int x=0;x<subjectname.size();x++){
temcell=row.createCell(cindex);
temcell.setCellStyle(style);
temcell.setCellValue(bean.getList().get(x));
cindex++;
temcell=row.createCell(cindex);
temcell.setCellStyle(style);
temcell.setCellValue(bean.getClassranklist().get(x));
cindex++;
temcell=row.createCell(cindex);
temcell.setCellStyle(style);
temcell.setCellValue(bean.getGraderanklist().get(x));
cindex++;
}
temcell=row.createCell(cindex);
temcell.setCellStyle(style);
temcell.setCellValue(bean.getSumscore());
cindex++;
temcell=row.createCell(cindex);
temcell.setCellStyle(style);
temcell.setCellValue(bean.getClassrank());
cindex++;
temcell=row.createCell(cindex);
temcell.setCellStyle(style);
temcell.setCellValue(bean.getGraderank());
cindex++;
}
/*CellStyle cellstyle=getStyle(book);
for(int i=0;i<list.size();i++){
Row row=sheet.createRow(i);
sublist=list.get(i);
for(int j=0;j<sublist.size();j++){
Cell cell=row.createCell(j);
cell.setCellValue(sublist.get(j));
cell.setCellStyle(cellstyle);
}
}*/
OutputStream out = response.getOutputStream();
book.write(out);
if(out!=null){
out.close();
}
if(book!=null){
book.close();
}
}
} catch (Exception e) {
System.out.println("创建excel,workbook失败");
e.printStackTrace();
}
}