Prechádzať zdrojové kódy

添加excel导出功能

zhouxianguang 6 rokov pred
rodič
commit
5061d5c486

+ 6 - 0
rankin-cms-web/pom.xml

@@ -93,6 +93,12 @@
             <artifactId>feign-httpclient</artifactId>
             <version>RELEASE</version>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>3.17</version>
+        </dependency>
     </dependencies>
 
 	<dependencyManagement>

+ 55 - 20
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/stmt/StmtController.java

@@ -9,9 +9,16 @@ import cn.rankin.common.utils.util.BeanUtil;
 import cn.rankin.common.utils.util.ProvinceUtil;
 import cn.rankin.data.api.user.dto.CampusSearchDTO;
 import cn.rankin.data.api.user.vo.CampusVo;
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.util.CellRangeAddress;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
 import java.util.List;
 
 @RestController
@@ -23,7 +30,8 @@ public class StmtController
 
     /**
      * 查询已开通校区报表
-     * @param user the user info
+     *
+     * @param user            the user info
      * @param campusSearchDTO the campus search
      * @return
      */
@@ -43,10 +51,10 @@ public class StmtController
             List<CampusVo> list = pageData.getData().getList();
             if (list != null && list.size() > 0)
             {
-                for(int i = 0; i<list.size();i++)
+                for (int i = 0; i < list.size(); i++)
                 {
-                    CampusVo vo =  list.get(i);
-                    String provinceCode =  vo.getProvinceCode();
+                    CampusVo vo = list.get(i);
+                    String provinceCode = vo.getProvinceCode();
                     String provinceName = ProvinceUtil.get(provinceCode);
                     vo.setProvinceName(provinceName);
                 }
@@ -58,12 +66,13 @@ public class StmtController
 
     /**
      * 查询已开通校区报表
-     * @param user the user info
+     *
+     * @param user            the user info
      * @param campusSearchDTO the campus search
      * @return
      */
     @RequestMapping(value = {"/campus/export", "/"}, method = RequestMethod.GET)
-    public APIResult<Page<CampusVo>> exportCampus(@NeedUser UserDetails user, CampusSearchDTO campusSearchDTO)
+    public APIResult<Page<CampusVo>> exportCampus(HttpServletResponse res, @NeedUser UserDetails user, CampusSearchDTO campusSearchDTO)
     {
         if (!user.isPlatForm())
         {
@@ -72,23 +81,49 @@ public class StmtController
         }
         APIResult<Page<CampusVo>> pageData = StmtService.search(BeanUtil.convertToMap(campusSearchDTO));
 
-        //设置省份
-        if (pageData != null)
+        //创建HSSFWorkbook对象(excel的文档对象)
+        HSSFWorkbook wb = new HSSFWorkbook();
+        //建立新的sheet对象(excel的表单)
+        HSSFSheet sheet = wb.createSheet("成绩表");
+        //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
+        HSSFRow row1 = sheet.createRow(0);
+        //创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
+        HSSFCell cell = row1.createCell(0);
+        //设置单元格内容
+        cell.setCellValue("学员考试成绩一览表");
+        //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));
+        //在sheet里创建第二行
+        HSSFRow row2 = sheet.createRow(1);
+        //创建单元格并设置单元格内容
+        row2.createCell(0).setCellValue("姓名");
+        row2.createCell(1).setCellValue("班级");
+        row2.createCell(2).setCellValue("笔试成绩");
+        row2.createCell(3).setCellValue("机试成绩");
+        //在sheet里创建第三行
+        HSSFRow row3 = sheet.createRow(2);
+        row3.createCell(0).setCellValue("李明");
+        row3.createCell(1).setCellValue("As178");
+        row3.createCell(2).setCellValue(87);
+        row3.createCell(3).setCellValue(78);
+        //.....省略部分代码
+
+        try
         {
-            List<CampusVo> list = pageData.getData().getList();
-            if (list != null && list.size() > 0)
-            {
-                for(int i = 0; i<list.size();i++)
-                {
-                    CampusVo vo =  list.get(i);
-                    String provinceCode =  vo.getProvinceCode();
-                    String provinceName = ProvinceUtil.get(provinceCode);
-                    vo.setProvinceName(provinceName);
-                }
-            }
+            //输出Excel文件
+            OutputStream output = res.getOutputStream();
+            res.reset();
+            res.setHeader("Content-disposition", "attachment; filename=details.xls");
+            res.setContentType("application/msexcel");
+            wb.write(output);
+            output.close();
+        }
+        catch (Exception ex)
+        {
+
         }
 
-        return StmtService.search(BeanUtil.convertToMap(campusSearchDTO));
+        return null;
     }
 
 }