excel表格下载

/**
* 下载表格
* @param knowNameList
* @param homeworkSendClassList
* @param footInfoList
*/
public String classDownloadTable(List<Knowledge> knowNameList,List<HomeworkSendClass> homeworkSendClassList,List<String> footInfoList,HttpServletResponse response){
//设置表格
HSSFWorkbook wb = new HSSFWorkbook();  
        // 第二步,设置单元格样式  
        HSSFCellStyle style = wb.createCellStyle();  
        // 水平居中
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);   
        // 垂直居中
        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        HSSFFont font = wb.createFont(); //创建一个字体样式
        font.setFontName("宋体");
        font.setFontHeightInPoints((short) 11);// 设置字体大小
        style.setFont(font);//加入字体样式
        // 在表格中添加一个sheet,对应Excel文件中的sheet  
        HSSFSheet sheet = wb.createSheet("班级成绩统计");  
        //设置表格行宽
        sheet.setColumnWidth(0, 4000);
        sheet.setColumnWidth(1, 4000);
        sheet.setColumnWidth(2, 4000);
        sheet.setColumnWidth(3, 8000);
    //在sheet中添加表头第0行,注意老版本pi对Excel的行数列数有限制short  
        HSSFRow row = sheet.createRow(0);  
        //在sheet中添加表头第0行第0列
        HSSFCell cell = row.createCell(0);
        cell.setCellValue("序号");  
        cell.setCellStyle(style); 
        cell = row.createCell(1);
        cell.setCellValue("姓名");  
        cell.setCellStyle(style);
        cell = row.createCell(2);
        cell.setCellValue("正确率(%)");  
        cell.setCellStyle(style);
        cell = row.createCell(3);
        cell.setCellValue("作业完成用时(时,分,秒)");  
        cell.setCellStyle(style);
        //在sheet中添加表头第1行,注意老版本pi对Excel的行数列数有限制short  
        HSSFRow row1 = sheet.createRow(1); 
        //在sheet中添加表头第1行第0列
        HSSFCell cell1 = row1.createCell(0);
        //总行数
        int rowNum=0;
        if(null!=knowNameList&&knowNameList.size()>0){
        for(int i=0;i<knowNameList.size();i++){
        rowNum=rowNum+1;
        //设置行宽
        sheet.setColumnWidth(4+i, 6000);
        //动态添加信息
        cell = row.createCell(4+i);
            cell.setCellValue("知识点掌握情况(%)");  
            cell.setCellStyle(style);
            cell1 = row1.createCell(4+i);
            cell1.setCellValue(knowNameList.get(i).getName());  
            cell1.setCellStyle(style);
        }
        }
        //设置顶部单元格格式
        Region region1 = new Region(0, (short)0, 1, (short)0);//0行0列到1行0列之间
        Region region2 = new Region(0, (short)1, 1, (short)1);//0行1列到1行1列之间
        Region region3 = new Region(0, (short)2, 1, (short)2);//0行2列到1行2列之间
        Region region4 = new Region(0, (short)3, 1, (short)3);//0行3列到1行3列之间
        //合并该区域单元格
        sheet.addMergedRegion(region1);
        sheet.addMergedRegion(region2);
        sheet.addMergedRegion(region3);
        sheet.addMergedRegion(region4);
        
        //将数据加入表格
        if(null!=homeworkSendClassList&&homeworkSendClassList.size()>0){
        for(int i=0;i<homeworkSendClassList.size();i++){
        HomeworkSendClass homeworkSendClass=homeworkSendClassList.get(i);
        HSSFRow rowNew = sheet.createRow(i+2); 
        HSSFCell cellNew = rowNew.createCell(0);
        cellNew.setCellValue(i+1);
        cellNew.setCellStyle(style);
        cellNew = rowNew.createCell(1);
        cellNew.setCellValue(homeworkSendClass.getStudentName());
        cellNew.setCellStyle(style);
        cellNew = rowNew.createCell(2);
        if(homeworkSendClass.getRight()==-1){
        cellNew.setCellValue("");
        }else{
        cellNew.setCellValue(homeworkSendClass.getRight()+"%");
        }
        cellNew.setCellStyle(style);
        cellNew = rowNew.createCell(3);
        if(!"00:00:00".equals(homeworkSendClass.getCostTime())){
        cellNew.setCellValue(homeworkSendClass.getCostTime());
        }else{
        if(homeworkSendClass.getRight()==-1){
        cellNew.setCellValue("");
        }else{
        cellNew.setCellValue("00:00:00");
        }
       
        }
        cellNew.setCellStyle(style);
        if(null!=homeworkSendClass.getAccuracy()&&homeworkSendClass.getAccuracy().size()>0){
        for(int k=0;k<rowNum;k++){
            cellNew = rowNew.createCell(k+4);
                cellNew.setCellValue(homeworkSendClass.getAccuracy().get(k)+"%");
                cellNew.setCellStyle(style);
            }
        }else{
        for(int k=0;k<rowNum;k++){
            cellNew = rowNew.createCell(k+4);
                cellNew.setCellValue("");
                cellNew.setCellStyle(style);
            }
        }
        }
        }
        if(null!=footInfoList){
        if(footInfoList.size()!=0){
              //设置底部单元格格式
                 Region region5 = new Region(homeworkSendClassList.size()+2, (short)0, homeworkSendClassList.size()+2, (short)1);//0行0列到1行0列之间
                 sheet.addMergedRegion(region5);
                 //添加表格底部
                 HSSFRow rowNew = sheet.createRow(homeworkSendClassList.size()+2); 
          HSSFCell cellNew = rowNew.createCell(0);
          cellNew.setCellValue("班级平均成绩");  
          cellNew.setCellStyle(style);
          for(int i=0;i<footInfoList.size();i++){
          cellNew = rowNew.createCell(i+2);
          cellNew.setCellValue(footInfoList.get(i));  
          cellNew.setCellStyle(style);
          }
             }else{
              //设置底部单元格格式
                 Region region5 = new Region(homeworkSendClassList.size()+2, (short)0, homeworkSendClassList.size()+2, (short)1);//0行0列到1行0列之间
                 sheet.addMergedRegion(region5);
                 //添加表格底部
                 HSSFRow rowNew = sheet.createRow(homeworkSendClassList.size()+2); 
          HSSFCell cellNew = rowNew.createCell(0);
          cellNew.setCellValue("班级平均成绩");  
          cellNew.setCellStyle(style);
          cellNew = rowNew.createCell(2);
      cellNew.setCellValue("0%");  
      cellNew.setCellStyle(style);
      cellNew = rowNew.createCell(3);
      cellNew.setCellValue("00:00:00");  
      cellNew.setCellStyle(style);
          for(int i=0;i<knowNameList.size();i++){
          cellNew = rowNew.createCell(i+4);
          cellNew.setCellValue("0%");  
          cellNew.setCellStyle(style);
          }
             }
        }
        FileOutputStream stream;
        String path="";
        String pathStr="";
try {
  response.reset();
            response.setContentType("application/x-download");
            response.setHeader("Content-Disposition", "attachment; filename=HomeworkAnalysis.xls");// 设定输出文件头
            OutputStream out = response.getOutputStream();
wb.write(out); 
out.close();
response.flushBuffer();
} catch (Exception e) {
e.printStackTrace();

return pathStr;
}

猜你喜欢

转载自blog.csdn.net/zwl18210851801/article/details/78852853
今日推荐