导出Excel表
首先导入pio包:
<!--导excel到数据库 -->
<!-- POI -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
controller层:
serviceImp:
/**
* 下载excel
*/
@Override
public List<SchoolTask> findAll() throws Exception {
HSSFWorkbook hwb = new HSSFWorkbook();//第一步,创建一个workbook(一个excel文件)
HSSFSheet hs = hwb.createSheet("图书详情信息");//第二步,在workbook中添加一个sheet,对应excel文件中sheet
HSSFRow hr = hs.createRow((int)0);//第三部,在sheet中添加表头第0行(相当于解释字段)
HSSFCellStyle hcs = hwb.createCellStyle();//第四步,设置第0行(表头)居中
hcs.setAlignment(HSSFCellStyle.ALIGN_CENTER);//创建居中格式
//将表头的字段放入数组当中
List<String> questionName=schoolTaskDao.selectQuestionName();
String[] excelHeader=new String[9];
excelHeader[0]="学校名称";
int add=1;
for(String qn:questionName) {
excelHeader[add]=qn;
add++;
}
for (int i = 0; i < excelHeader.length; i++) {
HSSFCell hc = hr.createCell(i);//顺序创建
hc.setCellValue(excelHeader[i]);//顺序塞入
hc.setCellStyle(hcs);//居中
hs.autoSizeColumn(i);//设置 i 这一列为自动调整列宽
}
List<SchoolTask> list = schoolTaskDao.findAll();//查找全部实体属性字段
String sname = "";
int j = 0;
int row = 0;
for (int i = 0; i < list.size(); i++) {
if(!list.get(i).getSchoolName().equals(sname)) {
row ++;
hr = hs.createRow(row); //在sheet中自动随 i+1 增加一行(i 是表头)
hr.createCell(0).setCellValue(list.get(i).getSchoolName());
sname = list.get(i).getSchoolName();
j = 0;
}
j ++;
hr.createCell(j).setCellValue(list.get(i).getTask());
}
String subjectName="";
for(SchoolTask li:list) {
subjectName=li.getSubjectName();
}
subjectName=subjectName+".xls";
FileOutputStream fos = new FileOutputStream("E:/"+subjectName);//先 new 出文件存放的位置
hwb.write(fos);;//写入
fos.close();//关闭资源
System.out.println("导出成功! 无任何异常。");
return list;
}