/**
* 下载表格
* @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;
}
* 下载表格
* @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;
}