Преглед изворни кода

Merge branch 'master' of https://github.com/java110/MicroCommunity into duckweed

duckweed пре 6 година
родитељ
комит
7803e9acf4

+ 0 - 13
WebService/pom.xml

@@ -60,19 +60,6 @@
         </dependency>
 
 
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi-ooxml</artifactId>
-        </dependency>
-        <!-- 处理excel和上面功能是一样的-->
-        <dependency>
-            <groupId>net.sourceforge.jexcelapi</groupId>
-            <artifactId>jxl</artifactId>
-        </dependency>
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>

+ 50 - 0
WebService/src/main/java/com/java110/web/components/assetImport/AssetImportComponent.java

@@ -0,0 +1,50 @@
+package com.java110.web.components.assetImport;
+
+import com.java110.common.util.ImportExcelUtils;
+import com.java110.core.context.IPageData;
+import com.java110.web.controller.CallComponentController;
+import com.java110.web.smo.app.IAddAppSMO;
+import com.java110.web.smo.assetImport.IAssetImportSMO;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.InputStream;
+
+/**
+ * 添加应用组件
+ */
+@Component("assetImport")
+public class AssetImportComponent {
+
+    private final static Logger logger = LoggerFactory.getLogger(CallComponentController.class);
+
+
+    @Autowired
+    private IAssetImportSMO assetImportSMOImpl;
+
+    /**
+     * 添加应用数据
+     *
+     * @param pd 页面数据封装
+     * @return ResponseEntity 对象
+     */
+    public ResponseEntity<String> importData(IPageData pd, MultipartFile uploadFile) throws Exception{
+
+        return assetImportSMOImpl.importExcelData(pd,uploadFile);
+    }
+
+    public IAssetImportSMO getAssetImportSMOImpl() {
+        return assetImportSMOImpl;
+    }
+
+    public void setAssetImportSMOImpl(IAssetImportSMO assetImportSMOImpl) {
+        this.assetImportSMOImpl = assetImportSMOImpl;
+    }
+}

+ 94 - 0
WebService/src/main/java/com/java110/web/controller/CallComponentController.java

@@ -1,11 +1,13 @@
 package com.java110.web.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.java110.common.constant.CommonConstant;
 import com.java110.common.exception.SMOException;
 import com.java110.common.factory.ApplicationContextFactory;
 import com.java110.common.util.Assert;
 import com.java110.core.base.controller.BaseController;
 import com.java110.core.context.IPageData;
+import com.java110.core.context.PageData;
 import com.java110.web.smo.impl.LoginServiceSMOImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -14,10 +16,12 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.util.Map;
 
 
 /**
@@ -80,5 +84,95 @@ public class CallComponentController extends BaseController {
         }
     }
 
+    //组件上传文件处理/callComponent/upload/
+
+    /**
+     * 调用组件 文件上传
+     * /callComponent/upload/assetImport/importData
+     *
+     * @return
+     */
+
+    @RequestMapping(path = "/callComponent/upload/{componentCode}/{componentMethod}")
+    public ResponseEntity<String> callComponentUploadFile(
+            @PathVariable String componentCode,
+            @PathVariable String componentMethod,
+            @RequestParam("uploadFile") MultipartFile uploadFile,
+            //@RequestBody String info,
+            HttpServletRequest request) {
+        ResponseEntity<String> responseEntity = null;
+        Map formParam = null;
+        IPageData pd = null;
+        try {
+            Assert.hasLength(componentCode, "参数错误,未传入组件编码");
+            Assert.hasLength(componentMethod, "参数错误,未传入调用组件方法");
+
+            Object componentInstance = ApplicationContextFactory.getBean(componentCode);
+
+            Assert.notNull(componentInstance, "未找到组件对应的处理类,请确认 " + componentCode);
+
+            Method cMethod = componentInstance.getClass().getDeclaredMethod(componentMethod, IPageData.class, MultipartFile.class);
+
+            Assert.notNull(cMethod, "未找到组件对应处理类的方法,请确认 " + componentCode + "方法:" + componentMethod);
+            pd = freshPageDate(request);
+
+            logger.debug("组件编码{},组件方法{},pd 为{}", componentCode, componentMethod, pd.toString());
+
+            responseEntity = (ResponseEntity<String>) cMethod.invoke(componentInstance, pd, uploadFile);
+
+        } catch (SMOException e) {
+            logger.error("组件运行异常",e);
+            /*MultiValueMap<String, String> headers = new HttpHeaders();
+            headers.add("code", e.getResult().getCode());*/
+            responseEntity = new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+        } catch (Exception e) {
+            logger.error("组件运行异常",e);
+            String msg = "";
+            if (e instanceof InvocationTargetException) {
+                Throwable targetEx = ((InvocationTargetException) e).getTargetException();
+                if (targetEx != null) {
+                    msg = targetEx.getMessage();
+                }
+            } else {
+                msg = e.getMessage();
+            }
+            responseEntity = new ResponseEntity<>(msg, HttpStatus.INTERNAL_SERVER_ERROR);
+        } finally {
+            logger.debug("组件调用返回信息为{}", responseEntity);
+            return responseEntity;
+        }
+    }
+
+    /**
+     * 刷新 pd 对象
+     *
+     * @param request HttpServletRequest 对象
+     * @return pd 对象
+     */
+    private IPageData freshPageDate(HttpServletRequest request) {
+        Map<String, String[]> params = request.getParameterMap();
+        IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
+        String reqData = "";
+        if (params != null && !params.isEmpty()) {
+            JSONObject paramObj = new JSONObject();
+            for (String key : params.keySet()) {
+                if (params.get(key).length > 0) {
+                    String value = "";
+                    for (int paramIndex = 0; paramIndex < params.get(key).length; paramIndex++) {
+                        value = params.get(key)[paramIndex] + ",";
+                    }
+                    value = value.endsWith(",") ? value.substring(0, value.length() - 1) : value;
+                    paramObj.put(key, value);
+                }
+                continue;
+            }
+            reqData = paramObj.toJSONString();
+        }
+
+        IPageData newPd = PageData.newInstance().builder(pd.getUserId(), pd.getToken(),
+                reqData, pd.getComponentCode(), pd.getComponentMethod(), "", pd.getSessionId());
+        return newPd;
+    }
+
 
 }

+ 24 - 0
WebService/src/main/java/com/java110/web/smo/assetImport/IAssetImportSMO.java

@@ -0,0 +1,24 @@
+package com.java110.web.smo.assetImport;
+
+import com.java110.core.context.IPageData;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * @ClassName IAssetImportSMO
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/9/23 23:13
+ * @Version 1.0
+ * add by wuxw 2019/9/23
+ **/
+public interface IAssetImportSMO {
+
+    /**
+     * 导入excel数据
+     * @param pd 前台数据封装
+     * @param uploadFile excel 文件
+     * @return ResponseEntity
+     */
+    public ResponseEntity<String> importExcelData(IPageData pd,  MultipartFile uploadFile) throws Exception;
+}

+ 47 - 0
WebService/src/main/java/com/java110/web/smo/assetImport/impl/AssetImportSMOImpl.java

@@ -0,0 +1,47 @@
+package com.java110.web.smo.assetImport.impl;
+
+import com.java110.common.util.ImportExcelUtils;
+import com.java110.core.context.IPageData;
+import com.java110.web.core.BaseComponentSMO;
+import com.java110.web.smo.assetImport.IAssetImportSMO;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * @ClassName AssetImportSmoImpl
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/9/23 23:14
+ * @Version 1.0
+ * add by wuxw 2019/9/23
+ **/
+@Service("assetImportSMOImpl")
+public class AssetImportSMOImpl extends BaseComponentSMO implements IAssetImportSMO {
+    private final static Logger logger = LoggerFactory.getLogger(AssetImportSMOImpl.class);
+
+    @Override
+    public ResponseEntity<String> importExcelData(IPageData pd, MultipartFile uploadFile) throws Exception{
+        InputStream is = uploadFile.getInputStream();
+
+        Workbook workbook = null;  //工作簿
+        Sheet sheet = null;         //工作表
+        String[] headers = null;   //表头信息
+
+        workbook = ImportExcelUtils.createWorkbook(uploadFile);
+
+        sheet = ImportExcelUtils.getSheet(workbook, "楼栋单元");
+        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+
+        logger.debug("请求参数为:%s", pd.getReqData());
+        return new ResponseEntity<String>("成功", HttpStatus.OK);
+    }
+}

+ 38 - 26
WebService/src/main/resources/components/systemPackage/assetImport/assetImport.html

@@ -1,34 +1,37 @@
-<div class="row">
-    <div class="col-lg-12">
-        <div class="ibox ">
-            <div class="ibox-title">
-                <h5>资产导入</h5>
-                <div class="ibox-tools" style="top:10px;">
-                    <button type="button" class="btn btn-primary btn-sm" v-on:click="_openDownloadHcExcelTemplate()">
-                        <i class="glyphicon glyphicon-download-alt"></i>
-                        模板
-                    </button>
+<div>
+    <div class="row">
+        <div class="col-lg-12">
+            <div class="ibox ">
+                <div class="ibox-title">
+                    <h5>资产导入</h5>
+                    <div class="ibox-tools" style="top:10px;">
+                        <button type="button" class="btn btn-primary btn-sm"
+                                v-on:click="_openDownloadHcExcelTemplate()">
+                            <i class="glyphicon glyphicon-download-alt"></i>
+                            模板
+                        </button>
+                    </div>
                 </div>
-            </div>
-            <div class="ibox-content">
-                <div>
+                <div class="ibox-content">
                     <div>
-                        <div class="form-group row">
-                            <label class="col-sm-2 col-form-label">选择文件</label>
-                            <div class="col-sm-10">
-                                <input ref="excelTemplate" type="file" placeholder="必填,请选择数据文件"
-                                       class="form-control"
-                                       name="excelTemplate"
-                                       @change="getExcelTemplate($event)"
-                                       accept=".xls,.xlsx"
-                                >
+                        <div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">选择文件</label>
+                                <div class="col-sm-10">
+                                    <input ref="excelTemplate" type="file" placeholder="必填,请选择数据文件"
+                                           class="form-control"
+                                           name="excelTemplate"
+                                           v-on:change="getExcelTemplate($event)"
+                                           accept=".xls,.xlsx"
+                                    >
+                                </div>
                             </div>
-                        </div>
-                        <div class="form-group row">
-                            <label class="col-sm-2 col-form-label">备注</label>
-                            <div class="col-sm-10">
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">备注</label>
+                                <div class="col-sm-10">
                                 <textarea v-model="assetImportInfo.remark" type="text" placeholder="请填写备注信息" rows="3"
                                           class="form-control"></textarea>
+                                </div>
                             </div>
                         </div>
                     </div>
@@ -36,4 +39,13 @@
             </div>
         </div>
     </div>
+
+    <div class="row">
+        <div class="col-md-10"></div>
+        <div class="col-md-2 " style="margin-bottom:10px; text-align:right">
+            <button type="button" class="btn btn-primary"
+                    v-on:click="_importData()">导入
+            </button>
+        </div>
+    </div>
 </div>

+ 71 - 5
WebService/src/main/resources/components/systemPackage/assetImport/assetImport.js

@@ -6,6 +6,7 @@
     vc.extends({
         data:{
             assetImportInfo:{
+                communityId: vc.getCurrentCommunity().communityId,
                 excelTemplate:'',
                 remark:""
             }
@@ -29,20 +30,85 @@
                                     param:"",
                                     errInfo:"文件不能为空"
                                 }
+                            ],
+                            'assetImportInfo.communityId':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"还未入驻小区,请先入驻小区"
+                                }
                             ]
                         });
             },
-            saveAssetImportInfo:function(){
-                if(!vc.component.assetImportValidate()){
-                    return ;
-                }
-            },
             _openDownloadHcExcelTemplate:function(){
                 //下载 模板
                 vc.jumpToPage('/import/hc.xlsx')
             },
             getExcelTemplate:function(e){
+                //console.log("getExcelTemplate 开始调用")
                vc.component.assetImportInfo.excelTemplate = e.target.files[0]
+            },
+            _importData:function(){
+
+                if(!vc.component.assetImportValidate()){
+                    return ;
+                }
+                // 导入数据
+                if (!vc.component.checkFileType(vc.component.assetImportInfo.excelTemplate.name.split('.')[1])) {
+                    vc.message('不是有效的Excel格式');
+                    return ;
+                }
+                if (!vc.component.checkFileSize(vc.component.assetImportInfo.excelTemplate.size)) {
+                    vc.message('Excel文件大小不能超过2M');
+                    return ;
+                }
+                var param = new FormData();
+                param.append("uploadFile", vc.component.assetImportInfo.excelTemplate);
+                param.append('communityId',vc.component.assetImportInfo.communityId);
+
+
+                vc.http.upload(
+                    'assetImport',
+                    'importData',
+                    param,
+                    {
+                        emulateJSON:true,
+                        //添加请求头
+                        headers: {
+                            "Content-Type": "multipart/form-data"
+                        }
+                     },
+                     function(json,res){
+                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+                        if(res.status == 200){
+                            //关闭model
+                            vc.message("处理成功");
+                            vc.jumpToPage('/flow/ownerFlow')
+                            return ;
+                        }
+                        vc.message(json);
+                     },
+                     function(errInfo,error){
+                        console.log('请求失败处理');
+                        vc.message(errInfo);
+                     });
+            },
+            checkFileType: function (fileType) {
+                const acceptTypes = ['xls', 'xlsx'];
+                for (var i = 0; i < acceptTypes.length; i++) {
+                    if (fileType === acceptTypes[i]) {
+                        return true;
+                    }
+                }
+                return false;
+            },
+            checkFileSize: function (fileSize) {
+                //2M
+                const MAX_SIZE = 2 * 1024 * 1024;
+                if (fileSize > MAX_SIZE) {
+                    return false;
+                }
+                return true;
             }
 
         }

+ 12 - 1
WebService/src/main/resources/static/js/core.js

@@ -91,7 +91,18 @@
                     errorCallback(error.bodyText,error);
                     vc.loading('close');
                 });
-        }
+        },
+        upload:function(componentCode,componentMethod,param,options,successCallback,errorCallback){
+                vc.loading('open');
+                Vue.http.post('/callComponent/upload/'+componentCode +"/"+componentMethod, param, options)
+                .then(function(res){
+                    successCallback(res.bodyText,res);
+                    vc.loading('close');
+                }, function(error){
+                    errorCallback(error.bodyText,error);
+                    vc.loading('close');
+                });
+        },
 
     };
 

+ 1 - 1
WebService/src/main/resources/views/assetImportFlow.html

@@ -23,7 +23,7 @@
             <vc:create name="breadcrumb"></vc:create>
         </div>
         <!-- id="component" -->
-        <div class="wrapper wrapper-content animated fadeInRight">
+        <div id="component" class="wrapper wrapper-content animated fadeInRight">
             <vc:create name="assetImport"></vc:create>
         </div>
 

+ 1 - 1
WebService/src/main/resources/views/init_company.html

@@ -18,7 +18,7 @@
 <body class="gray-bg">
 
 <vc:create name="loading"></vc:create>
-<div >
+<div>
     <vc:create name="company"></vc:create>
 
 </div>

+ 16 - 0
java110-common/pom.xml

@@ -132,5 +132,21 @@
             <groupId>commons-net</groupId>
             <artifactId>commons-net</artifactId>
         </dependency>
+
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml-schemas</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 42 - 0
java110-common/src/main/java/com/java110/common/util/Assert.java

@@ -6,6 +6,7 @@ import org.apache.commons.lang3.StringUtils;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -265,4 +266,45 @@ public class Assert extends org.springframework.util.Assert {
 
     }
 
+    @SuppressWarnings("rawtypes")
+    public static boolean objIsEmpty(Object o) {
+        if (o == null) {
+            return true;
+        }
+        if (o instanceof String) {
+            if (o.toString().trim().equals("")) {
+                return true;
+            }
+            if (o.equals("null") || o.equals("NULL")) {
+                return true;
+            }
+        } else if (o instanceof List) {
+            if (((List) o).size() == 0) {
+                return true;
+            }
+        } else if (o instanceof Map) {
+            if (((Map) o).size() == 0) {
+                return true;
+            }
+        } else if (o instanceof Set) {
+            if (((Set) o).size() == 0) {
+                return true;
+            }
+        } else if (o instanceof Object[]) {
+            if (((Object[]) o).length == 0) {
+                return true;
+            }
+        } else if (o instanceof int[]) {
+            if (((int[]) o).length == 0) {
+                return true;
+            }
+        } else if (o instanceof long[]) {
+            if (((long[]) o).length == 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
 }

+ 234 - 0
java110-common/src/main/java/com/java110/common/util/ImportExcelUtils.java

@@ -0,0 +1,234 @@
+package com.java110.common.util;
+
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFDateUtil;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * Excel导入工具类
+ *
+ * @author Evan.Zhang
+ */
+public class ImportExcelUtils {
+
+    /**
+     * 创建WorkBook对象
+     *
+     * @param filePath
+     * @return
+     * @throws IOException
+     */
+    public static final Workbook createWorkbook(String filePath) throws IOException {
+
+        if (filePath.trim().toLowerCase().endsWith("xls")) {
+            return new XSSFWorkbook(new FileInputStream(filePath));
+        } else if (filePath.trim().toLowerCase().endsWith("xlsx")) {
+            return new XSSFWorkbook(new FileInputStream(filePath));
+        } else {
+            throw new IllegalArgumentException("不是有效的excel文件格式");
+        }
+    }
+
+    /**
+     * 创建WorkBook对象
+     *
+     * @param uploadFile
+     * @return
+     * @throws IOException
+     */
+    public static final Workbook createWorkbook(MultipartFile uploadFile) throws IOException {
+        return new XSSFWorkbook(uploadFile.getInputStream());
+    }
+
+    /**
+     * 获取Sheet页面(按名称)
+     *
+     * @param wb
+     * @param sheetName
+     * @return
+     */
+    public static final Sheet getSheet(Workbook wb, String sheetName) {
+        return wb.getSheet(sheetName);
+    }
+
+    /**
+     * 获取Sheet页面(按页标)
+     *
+     * @param wb
+     * @param index
+     * @return
+     */
+    public static final Sheet getSheet(Workbook wb, int index) {
+        return wb.getSheetAt(index);
+    }
+
+    /**
+     * 获取Sheet页内容
+     *
+     * @param sheet
+     * @return
+     */
+    public static final List<Object[]> listFromSheet(Sheet sheet) {
+
+        List<Object[]> list = new ArrayList<Object[]>();
+        for (int r = sheet.getFirstRowNum(); r <= sheet.getLastRowNum(); r++) {
+            Row row = sheet.getRow(r);
+            if (row == null || row.getPhysicalNumberOfCells() == 0) continue;
+            Object[] cells = new Object[row.getLastCellNum()];
+            for (int c = row.getFirstCellNum(); c <= row.getLastCellNum(); c++) {
+                Cell cell = row.getCell(c);
+                if (cell == null) continue;
+                //判断是否为日期类型
+                cells[c] = getValueFromCell(cell);
+            }
+            list.add(cells);
+        }
+        return list;
+    }
+
+
+    /**
+     * 获取单元格内信息
+     *
+     * @param cell
+     * @return
+     */
+    public static final Object getValueFromCell(Cell cell) {
+        if (cell == null) {
+            //System.out.println("Cell is null !!!");
+            return null;
+        }
+        Object result = null;
+        if (cell instanceof HSSFCell) {
+            if (cell != null) {
+                // 单元格类型:Numeric:0,String:1,Formula:2,Blank:3,Boolean:4,Error:5
+                int cellType = ((HSSFCell) cell).getCellType();
+                switch (cellType) {
+                    case HSSFCell.CELL_TYPE_STRING:
+                        result = ((HSSFCell) cell).getStringCellValue();
+                        break;
+                    case HSSFCell.CELL_TYPE_NUMERIC:
+                        DecimalFormat df = new DecimalFormat("###.####");
+                        result = df.format(((HSSFCell) cell).getNumericCellValue());
+                        break;
+                    case HSSFCell.CELL_TYPE_FORMULA:
+                        result = ((HSSFCell) cell).getNumericCellValue();
+                        break;
+                    case HSSFCell.CELL_TYPE_BOOLEAN:
+                        result = ((HSSFCell) cell).getBooleanCellValue();
+                        break;
+                    case HSSFCell.CELL_TYPE_BLANK:
+                        result = null;
+                        break;
+                    case HSSFCell.CELL_TYPE_ERROR:
+                        result = null;
+                        break;
+                    default:
+                        System.out.println("枚举了所有类型");
+                        break;
+                }
+            }
+        } else if (cell instanceof XSSFCell) {
+            if (cell != null) {
+                // 单元格类型:Numeric:0,String:1,Formula:2,Blank:3,Boolean:4,Error:5
+                int cellType = ((XSSFCell) cell).getCellType();
+                switch (cellType) {
+                    case XSSFCell.CELL_TYPE_STRING:
+                        result = ((XSSFCell) cell).getRichStringCellValue().getString();
+                        break;
+                    case XSSFCell.CELL_TYPE_NUMERIC:
+                        DecimalFormat df = new DecimalFormat("###.####");
+                        result = df.format(((XSSFCell) cell).getNumericCellValue());
+                        break;
+                    case XSSFCell.CELL_TYPE_FORMULA:
+                        result = ((XSSFCell) cell).getNumericCellValue();
+                        break;
+                    case XSSFCell.CELL_TYPE_BOOLEAN:
+                        result = ((XSSFCell) cell).getBooleanCellValue();
+                        break;
+                    case XSSFCell.CELL_TYPE_BLANK:
+                        result = null;
+                        break;
+                    case XSSFCell.CELL_TYPE_ERROR:
+                        result = null;
+                        break;
+                    default:
+                        //System.out.println("枚举了所有类型");
+                        break;
+                }
+            }
+        }
+        return result;
+    }
+
+
+    /**
+     * 根据Sheet页导入Excel信息
+     *
+     * @param filePath   文件路径
+     * @param sheetIndex Sheet页下标
+     * @param startRow   开始列 :默认第一列
+     * @param startLine  开始行 :默认第一行
+     * @throws Exception
+     */
+    public static final List<Object[]> importExcelBySheetIndex(String filePath, int sheetIndex
+            , int startRow, int startLine) throws Exception {
+
+        List<Object[]> resultList = null;
+
+        //创建WorkBook对象
+        Workbook wb = createWorkbook(filePath);
+
+        // 获取Sheet
+        Sheet sheet = ImportExcelUtils.getSheet(wb, sheetIndex);
+
+        // 判断Sheet是否为空
+        if (sheet != null) {
+
+            // 遍历Sheet
+            List<Object[]> list = ImportExcelUtils.listFromSheet(sheet);
+            if (list != null && list.size() > 0) {
+                resultList = new ArrayList<Object[]>();
+                if (startLine <= list.size()) {
+                    for (int i = startLine; i < list.size(); i++) {
+                        int nullCount = 0;
+                        Object[] rows = list.get(i);
+                        if (rows != null && rows.length > 0) {
+                            List<Object> resultObjects = new ArrayList<Object>();
+                            for (int n = startRow; n < rows.length; n++) {
+                                if (Assert.objIsEmpty(rows[n])) {
+                                    nullCount++;
+                                }
+                                resultObjects.add(rows[n]);
+                            }
+
+                            //判断空的单元格个数
+                            if (nullCount >= rows.length) {
+                                break;
+                            } else {
+                                resultList.add(resultObjects.toArray());
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return resultList;
+    }
+}

+ 17 - 17
pom.xml

@@ -96,7 +96,6 @@
             </dependency>
 
 
-
             <dependency>
                 <groupId>com.alibaba</groupId>
                 <artifactId>fastjson</artifactId>
@@ -374,11 +373,11 @@
             </dependency>
 
 
-           <!-- <dependency>
-                <groupId>org.quartz-scheduler</groupId>
-                <artifactId>quartz</artifactId>
-                <version>2.3.0</version>
-            </dependency>-->
+            <!-- <dependency>
+                 <groupId>org.quartz-scheduler</groupId>
+                 <artifactId>quartz</artifactId>
+                 <version>2.3.0</version>
+             </dependency>-->
             <dependency>
                 <groupId>org.quartz-scheduler</groupId>
                 <artifactId>quartz</artifactId>
@@ -453,19 +452,20 @@
             <!-- 引入poi,解析workbook视图 -->
             <dependency>
                 <groupId>org.apache.poi</groupId>
-                <artifactId>poi</artifactId>
-                <version>3.16</version>
+                <artifactId>poi-ooxml</artifactId>
+                <version>3.17</version>
             </dependency>
+
             <dependency>
                 <groupId>org.apache.poi</groupId>
-                <artifactId>poi-ooxml</artifactId>
-                <version>3.14</version>
+                <artifactId>poi-ooxml-schemas</artifactId>
+                <version>3.17</version>
             </dependency>
-            <!-- 处理excel和上面功能是一样的-->
+
             <dependency>
-                <groupId>net.sourceforge.jexcelapi</groupId>
-                <artifactId>jxl</artifactId>
-                <version>2.6.10</version>
+                <groupId>org.apache.poi</groupId>
+                <artifactId>poi</artifactId>
+                <version>3.17</version>
             </dependency>
 
         </dependencies>
@@ -505,9 +505,9 @@
     <build>
         <plugins>
             <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-javadoc-plugin</artifactId>
-                    <version>2.10.4</version>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>2.10.4</version>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>