导出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层:

导出Excel表

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;
        }

 

dao层:

导出Excel表

Mapper里代码:

导出Excel表

代码有瑕疵,但是导出成excel是没有问题的,导出和导入一样,完全copy是行不通的,要理解,根据自己的需求来导。。。。