From 836af5be0ec8b59171d7c7ffa392a6bd234f0af7 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 수, 12 1월 2022 20:24:51 +0900
Subject: [PATCH] 업체 정보 일괄 import 기능

---
 src/main/webapp/views/companyField/companyFieldList.html                         |    1 
 src/main/java/kr/wisestone/owl/service/HostingFieldService.java                  |    3 
 src/main/java/kr/wisestone/owl/web/controller/CompanyFieldController.java        |   19 +
 src/main/webapp/scripts/app/companyField/companyFieldList.controller.js          |   38 ++
 src/main/java/kr/wisestone/owl/service/CompanyFieldService.java                  |    6 
 src/main/java/kr/wisestone/owl/service/IspFieldService.java                      |    2 
 src/main/java/kr/wisestone/owl/constant/MsgConstants.java                        |   11 
 src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties                           |   12 
 src/main/java/kr/wisestone/owl/service/impl/CompanyFieldCategoryServiceImpl.java |   41 +-
 src/main/webapp/scripts/components/companyField/companyField.service.js          |    9 
 src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java             |    8 
 src/main/java/kr/wisestone/owl/service/CompanyFieldCategoryService.java          |   10 
 src/main/webapp/scripts/app/companyField/companyField.js                         |    2 
 src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java         |  417 ++++++++++++++++++++++++++++++++
 src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java         |    8 
 src/main/java/kr/wisestone/owl/web/form/CompanyFieldForm.java                    |   10 
 src/main/webapp/i18n/ko/global.json                                              |    5 
 src/main/webapp/scripts/app/companyField/companyFieldImportExcel.controller.js   |   80 ++++++
 src/main/webapp/views/companyField/companyFieldExcelImport.html                  |   83 ++++++
 src/main/webapp/views/issue/issueExcelImport.html                                |    6 
 src/main/webapp/WEB-INF/i18n/code_ko_KR.properties                               |    1 
 src/main/webapp/scripts/main.js                                                  |    1 
 22 files changed, 731 insertions(+), 42 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
index 44ba22f..e9fdb3b 100644
--- a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
+++ b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
@@ -181,6 +181,17 @@
     public static final String EXCEL_CUSTOM_FIELD_VALUE_NOT_VALIDITY = "EXCEL_CUSTOM_FIELD_VALUE_NOT_VALIDITY"; //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 �엯�젰�븳 �궗�슜�옄 �젙�쓽 �븘�뱶 媛믪씠 �쑀�슚�븯吏� �븡�뒿�땲�떎.
     public static final String EXCEL_IMPORT_HEADER_CUSTOM_FIELD_NOT_EXIST = "EXCEL_IMPORT_HEADER_CUSTOM_FIELD_NOT_EXIST";   //  �벑濡앺븯�젮�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶瑜� 李얠쓣 �닔 �뾾�뒿�땲�떎. �빐�떦 �궗�슜�옄 �젙�쓽�븘�뱶�쓽 �씠由꾩씠 蹂�寃쎈릺�뿀嫄곕굹 �궘�젣�릺�뿀�뒿�땲�떎.
 
+    public static final String EXCEL_IMPORT_COMPANY_NAME_IS_NULL = "EXCEL_IMPORT_COMPANY_NAME_IS_NULL";   //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 �뾽泥대챸�씠 �엯�젰吏� �븡�븯�뒿�땲�떎.
+    public static final String EXCEL_IMPORT_URL_IS_NULL = "EXCEL_IMPORT_URL_IS_NULL";   //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 URL�씠 �엯�젰吏� �븡�븯�뒿�땲�떎.
+    public static final String EXCEL_IMPORT_ISP_NOT_EXIST = "EXCEL_IMPORT_ISP_NOT_EXIST";   //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 �엯�젰�맂 ISP紐낆쑝濡� 寃��깋�릺�뒗 ISP媛� �뾾�뒿�땲�떎.
+    public static final String EXCEL_IMPORT_HOSTING_NOT_EXIST = "EXCEL_IMPORT_HOSTING_NOT_EXIST";   //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 �엯�젰�맂 �샇�뒪�똿紐낆쑝濡� 寃��깋�릺�뒗 �샇�뒪�똿�씠 �뾾�뒿�땲�떎.
+    public static final String EXCEL_IMPORT_PARENT_SECTOR_NOT_EQUAL = "EXCEL_IMPORT_PARENT_SECTOR_NOT_EQUAL";   //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 �엯�젰�맂 �뾽醫�(以묐텇瑜�)�� �뾽醫�(��遺꾨쪟)�뿉 �냽�빐�엳吏� �븡�뒿�땲�떎.
+
+    public static final String EXCEL_IMPORT_COMPANY_TYPE_NOT_EXIST = "EXCEL_IMPORT_COMPANY_TYPE_NOT_EXIST";   //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 �엯�젰�맂 湲곗뾽援щ텇紐낆쑝濡� 寃��깋�릺�뒗 湲곗뾽援щ텇�씠 �뾾�뒿�땲�떎
+    public static final String EXCEL_IMPORT_PARENT_SECTOR_NOT_EXIST = "EXCEL_IMPORT_PARENT_SECTOR_NOT_EXIST";   //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 �엯�젰�맂 �뾽醫낅챸�쑝濡� 寃��깋�릺�뒗 �뾽醫�(��遺꾨쪟)�씠 �뾾�뒿�땲�떎
+    public static final String EXCEL_IMPORT_CHILD_SECTOR_NOT_EXIST = "EXCEL_IMPORT_CHILD_SECTOR_NOT_EXIST";   //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 �엯�젰�맂 �뾽醫낅챸�쑝濡� 寃��깋�릺�뒗 �뾽醫�(以묐텇瑜�)�씠 �뾾�뒿�땲�떎
+    public static final String EXCEL_IMPORT_REGION_NOT_EXIST = "EXCEL_IMPORT_REGION_NOT_EXIST";   //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 �엯�젰�맂 吏��뿭紐낆쑝濡� 寃��깋�릺�뒗 吏��뿭�씠 �뾾�뒿�땲�떎
+
     public static final String DOWN_ISSUE_NOT_EXIST = "DOWN_ISSUE_NOT_EXIST";   //  �븯�쐞 �씠�뒋 李얠쓣�닔 �뾾�쓬
 
     public static final String NOTICE_NOT_EXIST = "NOTICE_NOT_EXIST";   //  怨듭��궗�빆�씠 議댁옱�븯吏� �븡�뒿�땲�떎.
diff --git a/src/main/java/kr/wisestone/owl/service/CompanyFieldCategoryService.java b/src/main/java/kr/wisestone/owl/service/CompanyFieldCategoryService.java
index 6567213..933c04f 100644
--- a/src/main/java/kr/wisestone/owl/service/CompanyFieldCategoryService.java
+++ b/src/main/java/kr/wisestone/owl/service/CompanyFieldCategoryService.java
@@ -1,17 +1,11 @@
 package kr.wisestone.owl.service;
 
-import kr.wisestone.owl.domain.CompanyField;
 import kr.wisestone.owl.domain.CompanyFieldCategory;
+import kr.wisestone.owl.domain.enumType.CompanyFieldCategoryType;
 import kr.wisestone.owl.vo.CompanyFieldCategoryVo;
-import kr.wisestone.owl.vo.CompanyFieldVo;
 import kr.wisestone.owl.web.condition.CompanyFieldCategoryCondition;
-import kr.wisestone.owl.web.condition.CompanyFieldCondition;
-import kr.wisestone.owl.web.form.CompanyFieldForm;
 import org.springframework.data.domain.Pageable;
-import org.springframework.ui.Model;
-import org.springframework.web.servlet.ModelAndView;
 
-import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
 
@@ -19,4 +13,6 @@
     List<CompanyFieldCategoryVo> find(Map<String, Object> resJsonData, CompanyFieldCategoryCondition condition, Pageable pageable);
 
     CompanyFieldCategory find(Long id);
+
+    List<Map<String, Object>> findByType(CompanyFieldCategoryType categoryType);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java b/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java
index 746d179..c29f9a8 100644
--- a/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java
+++ b/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java
@@ -4,8 +4,10 @@
 import kr.wisestone.owl.vo.CompanyFieldVo;
 import kr.wisestone.owl.web.condition.CompanyFieldCondition;
 import kr.wisestone.owl.web.form.CompanyFieldForm;
+import kr.wisestone.owl.web.form.IssueForm;
 import org.springframework.data.domain.Pageable;
 import org.springframework.ui.Model;
+import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
@@ -32,4 +34,8 @@
     void removeCompany(CompanyFieldForm make);
 
     ModelAndView downloadExcel(HttpServletRequest request, Model model);
+
+    ModelAndView downloadExcelTemplate(HttpServletRequest request, Model model);
+
+    void importExcel(MultipartFile multipartFile) throws Exception;
 }
diff --git a/src/main/java/kr/wisestone/owl/service/HostingFieldService.java b/src/main/java/kr/wisestone/owl/service/HostingFieldService.java
index 666bc86..a17b08d 100644
--- a/src/main/java/kr/wisestone/owl/service/HostingFieldService.java
+++ b/src/main/java/kr/wisestone/owl/service/HostingFieldService.java
@@ -1,6 +1,7 @@
 package kr.wisestone.owl.service;
 
 import kr.wisestone.owl.domain.HostingField;
+import kr.wisestone.owl.domain.IspField;
 import kr.wisestone.owl.vo.HostingFieldVo;
 import kr.wisestone.owl.web.condition.HostingFieldCondition;
 import kr.wisestone.owl.web.form.HostingFieldForm;
@@ -29,4 +30,6 @@
 
     ModelAndView downloadExcel(HttpServletRequest request, Model model);
 
+    List<HostingField> findAll();
+
 }
diff --git a/src/main/java/kr/wisestone/owl/service/IspFieldService.java b/src/main/java/kr/wisestone/owl/service/IspFieldService.java
index ab5dcbf..57ab94c 100644
--- a/src/main/java/kr/wisestone/owl/service/IspFieldService.java
+++ b/src/main/java/kr/wisestone/owl/service/IspFieldService.java
@@ -28,4 +28,6 @@
     void remove(IspFieldForm make);
 
     ModelAndView downloadExcel(HttpServletRequest request, Model model);
+
+    List<IspField> findAll();
 }
diff --git a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldCategoryServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldCategoryServiceImpl.java
index 0601504..3eb3462 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldCategoryServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldCategoryServiceImpl.java
@@ -1,39 +1,22 @@
 package kr.wisestone.owl.service.impl;
 
 import com.google.common.collect.Lists;
-import kr.wisestone.owl.common.ExcelConditionCheck;
 import kr.wisestone.owl.constant.Constants;
 import kr.wisestone.owl.constant.MsgConstants;
-import kr.wisestone.owl.domain.CompanyField;
 import kr.wisestone.owl.domain.CompanyFieldCategory;
-import kr.wisestone.owl.domain.HostingField;
-import kr.wisestone.owl.domain.IspField;
+import kr.wisestone.owl.domain.enumType.CompanyFieldCategoryType;
 import kr.wisestone.owl.exception.OwlRuntimeException;
 import kr.wisestone.owl.mapper.CompanyFieldCategoryMapper;
-import kr.wisestone.owl.mapper.CompanyFieldMapper;
 import kr.wisestone.owl.repository.CompanyFieldCategoryRepository;
-import kr.wisestone.owl.repository.CompanyFieldRepository;
-import kr.wisestone.owl.repository.HostingFieldRepository;
-import kr.wisestone.owl.repository.IspFieldRepository;
 import kr.wisestone.owl.service.*;
 import kr.wisestone.owl.util.ConvertUtil;
 import kr.wisestone.owl.vo.*;
 import kr.wisestone.owl.web.condition.CompanyFieldCategoryCondition;
-import kr.wisestone.owl.web.condition.CompanyFieldCondition;
-import kr.wisestone.owl.web.condition.HostingFieldCondition;
-import kr.wisestone.owl.web.form.CompanyFieldForm;
-import kr.wisestone.owl.web.view.ExcelView;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.ui.Model;
-import org.springframework.web.servlet.ModelAndView;
 
-import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -76,6 +59,28 @@
         return this.companyFieldCategoryMapper.findById(id);
     }
 
+    public List<Map<String, Object>> findByType(CompanyFieldCategoryType categoryType) {
+        CompanyFieldCategoryCondition condition = new CompanyFieldCategoryCondition();
+        switch (categoryType) {
+            case COMPANYTYPE:
+                condition.setTypeCategory("COMPANYTYPE");
+                break;
+            case PARENTSECTOR:
+                condition.setTypeCategory("PARENTSECTOR");
+                break;
+            case CHILDSECTOR:
+                condition.setTypeCategory("CHILDSECTOR");
+                break;
+            case REGION:
+                condition.setTypeCategory("REGION");
+                break;
+            case STATUS:
+                condition.setTypeCategory("STATUS");
+                break;
+        }
+        return this.companyFieldCategoryMapper.find(condition);
+    }
+
     //  寃��깋 寃곌낵瑜� Vo 濡� 蹂��솚�븳�떎.
     private List<CompanyFieldCategoryVo> convertCompanyFieldCategoryVoToMap(List<Map<String, Object>> results, Long totalCount, Pageable pageable, Map<String, Object> resJsonData) {
         List<CompanyFieldCategoryVo> companyFieldCategoryVos = Lists.newArrayList();
diff --git a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
index e26401b..01602a2 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -1,14 +1,17 @@
 package kr.wisestone.owl.service.impl;
 
 import kr.wisestone.owl.domain.*;
+import kr.wisestone.owl.domain.enumType.CompanyFieldCategoryType;
 import kr.wisestone.owl.repository.HostingFieldRepository;
 import kr.wisestone.owl.repository.IspFieldRepository;
 import kr.wisestone.owl.service.*;
 import kr.wisestone.owl.util.CommonUtil;
-import kr.wisestone.owl.web.condition.CompanyFieldCategoryCondition;
+import kr.wisestone.owl.util.MapUtil;
 import kr.wisestone.owl.web.condition.CompanyFieldCondition;
 import kr.wisestone.owl.web.form.CompanyFieldForm;
+import kr.wisestone.owl.web.form.IssueForm;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.*;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.Model;
 import com.google.common.collect.Lists;
@@ -25,6 +28,7 @@
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
@@ -70,6 +74,9 @@
     protected JpaRepository<CompanyField, Long> getRepository() {
         return this.companyFieldRepository;
     }
+
+    private static final int EXCEL_DOWNLOAD_MAX_ROWS = 10000;   //  excel download �젣�븳
+    private static final int EXCEL_IMPORT_MAX_ROWS = 10000; //  excel import �젣�븳
 
     // �뾽泥� 異붽�
     @Override
@@ -222,6 +229,414 @@
         }
     }
 
+    //  �뾽泥� Import �슜 �뿊�� �뀥�뵆由� �떎�슫濡쒕뱶
+    @Override
+    @Transactional
+    public ModelAndView downloadExcelTemplate(HttpServletRequest request, Model model) {
+
+        ExportExcelVo excelInfo = new ExportExcelVo();
+        excelInfo.setHideCount(true);
+        excelInfo.setFileName(this.messageAccessor.message("common.registerExcelCompanyField")); // �뿊��濡� �뾽泥� �벑濡앺븯湲�
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.companyName"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // �뾽泥대챸
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.companyUrl"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // url
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("isp.ispName"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // isp紐�
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("Hosting.HostingName"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // �샇�뒪�똿紐�
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.companyTel"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // �뿰�씫泥�
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.companyEmail"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // �씠硫붿씪
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.companyManager"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // �떞�떦�옄
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.companyTypeName"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // 湲곗뾽援щ텇
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.parentSectorName"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // �뾽醫�(��遺꾨쪟)
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.childSectorName"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // �뾽醫�(以묐텇瑜�)
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.regionName"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // 吏��뿭
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.statusName"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // �긽�깭
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.companyMemo"), 40, ExportExcelAttrVo.ALIGN_CENTER)); // 鍮꾧퀬
+
+        //  �뿊���뿉 �꽔�쓣 �뜲�씠�꽣 - CompanyFieldVos �뜲�씠�꽣瑜� �뿊���뿉�꽌 �몴�떆�븷 �닔 �엳�뒗 �뜲�씠�꽣濡� 蹂�寃쏀븳�떎.
+        excelInfo.setDatas(Lists.newArrayList(new CompanyFieldVo()));
+
+        model.addAttribute(Constants.EXCEL, excelInfo);
+        return new ModelAndView(this.excelView);
+    }
+
+    //  �뾽濡쒕뱶 �뙆�씪 �솗�옣�옄 泥댄겕
+    private void verifyMultipartFileExtension(MultipartFile multipartFile) {
+        multipartFile.getOriginalFilename();
+
+        int pos = multipartFile.getOriginalFilename().lastIndexOf(".");
+        String ext = multipartFile.getOriginalFilename().substring(pos + 1);
+
+        if (!ext.equals("xlsx")) {
+            throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.EXCEL_NOT_EXTENSION));
+        }
+    }
+
+    //  �뾽泥댁쓽 二쇱슂 �냽�꽦�쓣 map �뿉 ���옣�븯�뿬 �뿊�� import �뿉�꽌 吏��젙�븳 ���긽(�뾽泥� �냽�꽦)�쓣 鍮좊Ⅴ寃� 李얠쓣 �닔 �엳寃� �븳�떎.
+    private void CompanyFieldAttributeMapToList(Map<String, IspField> ispFieldMaps, Map<String, HostingField> hostingFieldMaps,
+                                                             Map<String, Map<String, Object>> companyTypeMaps, Map<String, Map<String, Object>> parentSectorMaps,
+                                                             Map<String, Map<String, Object>> childSectorMaps, Map<String, Map<String, Object>> regionMaps, Map<String, Map<String, Object>> statusMaps) {
+
+        List<IspField> ispFields = this.ispFieldService.findAll();
+        for (IspField ispField : ispFields) {
+            ispFieldMaps.put(ispField.getName(), ispField);
+        }
+
+        List<HostingField> hostingFields = this.hostingFieldService.findAll();
+        for (HostingField hostingField : hostingFields) {
+            hostingFieldMaps.put(hostingField.getName(), hostingField);
+        }
+
+        List<Map<String, Object>> companyTypes = this.companyFieldCategoryService.findByType(CompanyFieldCategoryType.COMPANYTYPE);
+        for (Map<String, Object> companyType : companyTypes) {
+            companyTypeMaps.put(MapUtil.getString(companyType, "useValue"), companyType);
+        }
+
+        List<Map<String, Object>> parentSectors = this.companyFieldCategoryService.findByType(CompanyFieldCategoryType.PARENTSECTOR);
+        for (Map<String, Object> parentSector : parentSectors) {
+            parentSectorMaps.put(MapUtil.getString(parentSector, "useValue"), parentSector);
+        }
+
+        List<Map<String, Object>> childSectors = this.companyFieldCategoryService.findByType(CompanyFieldCategoryType.CHILDSECTOR);
+        for (Map<String, Object> childSector : childSectors) {
+            childSectorMaps.put(MapUtil.getString(childSector, "useValue"), childSector);
+        }
+
+        List<Map<String, Object>> regions = this.companyFieldCategoryService.findByType(CompanyFieldCategoryType.REGION);
+        for (Map<String, Object> region : regions) {
+            regionMaps.put(MapUtil.getString(region, "useValue"), region);
+        }
+
+        List<Map<String, Object>> statuses = this.companyFieldCategoryService.findByType(CompanyFieldCategoryType.STATUS);
+        for (Map<String, Object> status : statuses) {
+            statusMaps.put(MapUtil.getString(status, "useValue"), status);
+        }
+    }
+
+    //  �뿊�� import 濡� �씠�뒋瑜� �벑濡앺븳�떎.
+    @Override
+    @Transactional
+    public void importExcel(MultipartFile multipartFile) throws Exception {
+        //  �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎.
+        this.workspaceService.checkUseWorkspace();
+
+        if (multipartFile != null) {
+            //  �뾽濡쒕뱶 �뙆�씪 �솗�옣�옄 泥댄겕
+            this.verifyMultipartFileExtension(multipartFile);
+
+            Map<String, IspField> ispFieldMaps = new HashMap<>();   //  ISP 紐⑥쓬
+            Map<String, HostingField> hostingFieldMaps = new HashMap<>();   //  �샇�뒪�똿 紐⑥쓬
+            Map<String, Map<String, Object>> companyTypeMaps = new HashMap<>(); //  移댄뀒怨좊━ 紐⑥쓬
+            Map<String, Map<String, Object>> parentSectorMaps = new HashMap<>(); //  移댄뀒怨좊━ 紐⑥쓬
+            Map<String, Map<String, Object>> childSectorMaps = new HashMap<>(); //  移댄뀒怨좊━ 紐⑥쓬
+            Map<String, Map<String, Object>> regionMaps = new HashMap<>(); //  移댄뀒怨좊━ 紐⑥쓬
+            Map<String, Map<String, Object>> statusMaps = new HashMap<>(); //  移댄뀒怨좊━ 紐⑥쓬
+
+            //  �뾽泥댁쓽 二쇱슂 �냽�꽦�쓣 map �뿉 ���옣�븯�뿬 �뿊�� import �뿉�꽌 吏��젙�븳 ���긽(�씠�뒋 �냽�꽦)�쓣 鍮좊Ⅴ寃� 李얠쓣 �닔 �엳寃� �븳�떎.
+            this.CompanyFieldAttributeMapToList(ispFieldMaps, hostingFieldMaps, companyTypeMaps, parentSectorMaps, childSectorMaps, regionMaps, statusMaps);
+            //  0.237 - 0.230
+
+            List<CompanyFieldForm> companyFieldForms = Lists.newArrayList();
+            List<String> headers = Lists.newArrayList();
+
+            Workbook workbook;
+
+            workbook = WorkbookFactory.create(multipartFile.getInputStream());
+            Sheet sheet = workbook.getSheetAt(0);
+            int lastRowNum = sheet.getLastRowNum() + 1;
+
+            //  2嫄� - �젣紐�, �뿤�뜑 - �꽦�뒫�쓣 �쐞�빐 理쒕� 1留뚭굔�쑝濡� �젣�븳
+            if (lastRowNum > (EXCEL_IMPORT_MAX_ROWS + 2)) {
+                throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.EXCEL_IMPORT_MAX_ROWS_OVER));
+            }
+
+            for (int rowIndex = 0; rowIndex < lastRowNum; rowIndex++) {
+                //  0踰덉� �뿤�뜑�뒗 臾댁떆�븳�떎.
+                Row row = sheet.getRow(rowIndex);
+                //  �뿤�뜑 �젙蹂대�� 異붿텧�븳�떎 - �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂대�� 媛��졇�삤湲� �쐞�빐
+                if (rowIndex == 1) {
+                    for (int cellIndex = 0; cellIndex < row.getLastCellNum(); cellIndex++) {
+                        Cell cell = row.getCell(cellIndex);
+
+                        if (cell == null) {
+                            throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.EXCEL_EMPTY_CELL));
+                        }
+
+                        //  �뿊�� import �뜲�씠�꽣�뿉�꽌 cell 媛믪쓣 臾몄옄�뿴濡� 蹂��솚�븳�떎.
+                        String cellValue = CommonUtil.convertExcelStringToCell(cell);
+
+                        if (StringUtils.isEmpty(cellValue)) {
+                            throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.EXCEL_HEADER_EMPTY_CELL));
+                        }
+
+                        headers.add(cellValue);
+                    }
+                }
+
+                //  1踰� �뿤�뜑遺��꽣 �뜲�씠�꽣 �쁺�뿭
+                if (rowIndex > 1) {
+                    //  �뾽泥대줈 �벑濡앺븯湲� �쐞�빐 CompanyFieldForm �뿉 �뜲�씠�꽣瑜� �뀑�똿�븳�떎.
+                    CompanyFieldForm newCompanyFieldForm = this.setCompanyFieldFormToExcelField(row, (rowIndex + 1), ispFieldMaps, hostingFieldMaps, companyTypeMaps, parentSectorMaps, childSectorMaps, regionMaps, statusMaps, headers);
+
+                    companyFieldForms.add(newCompanyFieldForm);
+                }
+            }
+
+            if (companyFieldForms.size() < 1) {
+                return;
+            }
+
+            for (CompanyFieldForm saveCompanyFieldForm : companyFieldForms) {
+                CompanyField companyField = new CompanyField();
+                ConvertUtil.copyProperties(saveCompanyFieldForm, companyField);
+
+                companyField = this.companyFieldRepository.saveAndFlush(companyField);
+
+                saveCompanyFieldForm.setId(companyField.getId());
+            }
+        }
+    }
+
+    //  �뿊�� �븘�뱶�뿉 �엳�뒗 �젙蹂대�� �뾽泥� form �쑝濡� �삷湲대떎.
+    private CompanyFieldForm setCompanyFieldFormToExcelField(Row row, int rowIndex, Map<String, IspField> ispFieldMaps, Map<String, HostingField> hostingFieldMaps,
+                                                             Map<String, Map<String, Object>> companyTypeMaps, Map<String, Map<String, Object>> parentSectorMaps,
+                                                             Map<String, Map<String, Object>> childSectorMaps, Map<String, Map<String, Object>> regionMaps,
+                                                             Map<String, Map<String, Object>> statusMaps, List<String> headers) {
+        CompanyFieldForm companyFieldForm = new CompanyFieldForm();
+        companyFieldForm.setRegisterId(this.webAppUtil.getLoginId());
+
+        //  �젣紐�, �궡�슜, �봽濡쒖젥�듃 �궎, �씠�뒋 ���엯, �슦�꽑�닚�쐞, 以묒슂�룄, �떞�떦�옄, �떆�옉�씪, 醫낅즺�씪, �궗�슜�옄 �젙�쓽 �븘�뱶
+        for (int cellIndex = 0; cellIndex < headers.size(); cellIndex++) {
+            Cell cell = row.getCell(cellIndex);
+            switch (cellIndex) {
+                case 0:
+                    //  �뾽泥대챸
+                    this.setCompanyFormName(cell, companyFieldForm, rowIndex);
+                    break;
+
+                case 1:
+                    //  url
+                    this.setCompanyFormUrl(cell, companyFieldForm, rowIndex);
+                    break;
+
+                case 2:
+                    // isp紐�
+                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
+                        this.setCompanyFormIspName(cell, ispFieldMaps, companyFieldForm, rowIndex);
+                    }
+                    break;
+
+                case 3:
+                    // �샇�뒪�똿紐�
+                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
+                        this.setCompanyFormHostingName(cell, hostingFieldMaps, companyFieldForm, rowIndex);
+                    }
+                    break;
+
+                case 4:
+                    // �뿰�씫泥�
+                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
+                        this.setCompanyFormTel(cell, companyFieldForm, rowIndex);
+                    }
+                    break;
+
+                case 5:
+                    // �씠硫붿씪
+                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
+                        this.setCompanyFormEmail(cell, companyFieldForm, rowIndex);
+                    }
+                    break;
+
+                case 6:
+                    // �떞�떦�옄
+                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
+                        this.setCompanyFormManager(cell, companyFieldForm, rowIndex);
+                    }
+                    break;
+
+                case 7:
+                    // 湲곗뾽援щ텇
+                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
+                        this.setCompanyFormCompanyType(cell, companyTypeMaps, companyFieldForm, rowIndex);
+                    }
+                    break;
+
+                case 8:
+                    // �뾽醫�(��遺꾨쪟)
+                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
+                        this.setCompanyFormParentSector(cell, parentSectorMaps, companyFieldForm, rowIndex);
+                    }
+                    break;
+
+                case 9:
+                    // �뾽醫�(以묐텇瑜�)
+                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
+                        this.setCompanyFormChildSector(cell, childSectorMaps, companyFieldForm, rowIndex);
+                    }
+                    break;
+
+                case 10:
+                    // 吏��뿭
+                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
+                        this.setCompanyFormRegion(cell, regionMaps, companyFieldForm, rowIndex);
+                    }
+                    break;
+
+                case 11:
+                    // �긽�깭
+                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
+                        this.setCompanyFormStatus(cell, statusMaps, companyFieldForm, rowIndex);
+                    }
+
+                case 12:
+                    // 鍮꾧퀬
+                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
+                        this.setCompanyFormMemo(cell, companyFieldForm, rowIndex);
+                    }
+                    break;
+            }
+        }
+
+        return companyFieldForm;
+    }
+
+    private void setCompanyFormMemo(Cell cell, CompanyFieldForm companyFieldForm, int rowIndex) {
+        companyFieldForm.setMemo(CommonUtil.convertExcelStringToCell(cell));
+    }
+
+    private void setCompanyFormStatus(Cell cell, Map<String, Map<String, Object>> statusMaps, CompanyFieldForm companyFieldForm, int rowIndex) {
+        if (cell != null) {
+            Map<String, Object> statusMap = statusMaps.get(CommonUtil.convertExcelStringToCell(cell));
+            if (MapUtil.getLong(statusMap, "id") != null) {
+                companyFieldForm.setStatusId(MapUtil.getLong(statusMap, "id"));
+            } else {
+                companyFieldForm.setStatusId(120L);
+            }
+            companyFieldForm.setStatusName(CommonUtil.convertExcelStringToCell(cell));
+        }
+    }
+
+    private void setCompanyFormRegion(Cell cell, Map<String, Map<String, Object>> regionMaps, CompanyFieldForm companyFieldForm, int rowIndex) {
+        if (cell != null) {
+            Map<String, Object> regionMap = regionMaps.get(CommonUtil.convertExcelStringToCell(cell));
+            if (regionMap == null) {
+                throw new OwlRuntimeException(
+                        this.messageAccessor.getMessage(MsgConstants.EXCEL_IMPORT_REGION_NOT_EXIST, rowIndex));
+            }
+            companyFieldForm.setRegionId(MapUtil.getLong(regionMap, "id"));
+        }
+    }
+
+    private void setCompanyFormChildSector(Cell cell, Map<String, Map<String, Object>> childSectorMaps, CompanyFieldForm companyFieldForm, int rowIndex) {
+        if (cell != null) {
+            Map<String, Object> childSectorMap = childSectorMaps.get(CommonUtil.convertExcelStringToCell(cell));
+            if (!companyFieldForm.getParentSectorId().equals(MapUtil.getLong(childSectorMap, "parentId"))) {
+                throw new OwlRuntimeException(
+                        this.messageAccessor.getMessage(MsgConstants.EXCEL_IMPORT_PARENT_SECTOR_NOT_EQUAL, rowIndex));
+            }
+            companyFieldForm.setChildSectorId(MapUtil.getLong(childSectorMap, "id"));
+        }
+    }
+
+    private void setCompanyFormParentSector(Cell cell, Map<String, Map<String, Object>> parentSectorMaps, CompanyFieldForm companyFieldForm, int rowIndex) {
+        if (cell != null) {
+            Map<String, Object> parentSectorMap = parentSectorMaps.get(CommonUtil.convertExcelStringToCell(cell));
+            if (parentSectorMap == null) {
+                throw new OwlRuntimeException(
+                        this.messageAccessor.getMessage(MsgConstants.EXCEL_IMPORT_PARENT_SECTOR_NOT_EXIST, rowIndex));
+            }
+            companyFieldForm.setParentSectorId(MapUtil.getLong(parentSectorMap, "id"));
+        }
+    }
+
+    private void setCompanyFormCompanyType(Cell cell, Map<String, Map<String, Object>> companyTypeMaps, CompanyFieldForm companyFieldForm, int rowIndex) {
+        if (cell != null) {
+            Map<String, Object> companyTypeMap = companyTypeMaps.get(CommonUtil.convertExcelStringToCell(cell));
+            if (companyTypeMap == null) {
+                throw new OwlRuntimeException(
+                        this.messageAccessor.getMessage(MsgConstants.EXCEL_IMPORT_COMPANY_TYPE_NOT_EXIST, rowIndex));
+            }
+            companyFieldForm.setCompanyTypeId(MapUtil.getLong(companyTypeMap, "id"));
+        }
+    }
+
+    private void setCompanyFormManager(Cell cell, CompanyFieldForm companyFieldForm, int rowIndex) {
+        if (cell != null) {
+            companyFieldForm.setManager(CommonUtil.convertExcelStringToCell(cell));
+        }
+    }
+
+    private void setCompanyFormEmail(Cell cell, CompanyFieldForm companyFieldForm, int rowIndex) {
+        if (cell != null) {
+            companyFieldForm.setEmail(CommonUtil.convertExcelStringToCell(cell));
+        }
+    }
+
+    private void setCompanyFormTel(Cell cell, CompanyFieldForm companyFieldForm, int rowIndex) {
+        if (cell != null) {
+            companyFieldForm.setTel(CommonUtil.convertExcelStringToCell(cell));
+        }
+    }
+
+    private void setCompanyFormHostingName(Cell cell, Map<String, HostingField> hostingFieldMaps, CompanyFieldForm companyFieldForm, int rowIndex) {
+        if (cell != null) {
+
+            HostingField hostingField = hostingFieldMaps.get(CommonUtil.convertExcelStringToCell(cell));
+            if (hostingField == null) {
+                throw new OwlRuntimeException(
+                        this.messageAccessor.getMessage(MsgConstants.EXCEL_IMPORT_HOSTING_NOT_EXIST, rowIndex));
+            }
+            companyFieldForm.setHostingId(hostingField.getId());
+        }
+    }
+
+    private void setCompanyFormIspName(Cell cell, Map<String, IspField> ispFieldMaps, CompanyFieldForm companyFieldForm, int rowIndex) {
+        if (cell != null) {
+
+            IspField ispField = ispFieldMaps.get(CommonUtil.convertExcelStringToCell(cell));
+            if (ispField == null) {
+                throw new OwlRuntimeException(
+                        this.messageAccessor.getMessage(MsgConstants.EXCEL_IMPORT_ISP_NOT_EXIST, rowIndex));
+            }
+            companyFieldForm.setIspId(ispField.getId());
+        }
+    }
+
+    private void setCompanyFormName(Cell cell, CompanyFieldForm companyFieldForm, int rowIndex) {
+        if (cell == null) {
+            throw new OwlRuntimeException(
+                    this.messageAccessor.getMessage(MsgConstants.EXCEL_IMPORT_COMPANY_NAME_IS_NULL, rowIndex));
+        }
+
+        String title = CommonUtil.convertExcelStringToCell(cell);
+
+        //  �뾽泥대챸 �쑀�슚�꽦 泥댄겕
+        this.verifyTitle(title);
+        companyFieldForm.setName(title);
+    }
+
+    private void setCompanyFormUrl(Cell cell, CompanyFieldForm companyFieldForm, int rowIndex) {
+        if (cell == null) {
+            throw new OwlRuntimeException(
+                    this.messageAccessor.getMessage(MsgConstants.EXCEL_IMPORT_URL_IS_NULL, rowIndex));
+        }
+        String url = CommonUtil.convertExcelStringToCell(cell);
+        this.verifyUrl(url, null); //url �쑀�슚�꽦 寃��궗
+
+        companyFieldForm.setUrl(url);
+    }
+
+    //  �뾽泥대챸 �쑀�슚�꽦 泥댄겕
+    private void verifyTitle(String title) {
+        if (StringUtils.isEmpty(title)) {
+            throw new OwlRuntimeException(
+                    this.messageAccessor.getMessage(MsgConstants.ISSUE_NO_TITLE));
+        }
+
+        if (title.length() > 300) {
+            throw new OwlRuntimeException(
+                    this.messageAccessor.getMessage(MsgConstants.ISSUE_TITLE_MAX_LENGTH_OUT));
+        }
+    }
+
     // �뾽泥� 紐⑸줉�쓣 �뿊��濡� �떎�슫濡쒕뱶 �븳�떎.
     @Override
     public ModelAndView downloadExcel(HttpServletRequest request, Model model) {
diff --git a/src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java
index 4266bd9..5a654a5 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java
@@ -6,6 +6,7 @@
 import kr.wisestone.owl.constant.MsgConstants;
 import kr.wisestone.owl.domain.CompanyField;
 import kr.wisestone.owl.domain.HostingField;
+import kr.wisestone.owl.domain.IspField;
 import kr.wisestone.owl.exception.OwlRuntimeException;
 import kr.wisestone.owl.mapper.HostingFieldMapper;
 import kr.wisestone.owl.repository.HostingFieldRepository;
@@ -25,6 +26,7 @@
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.Model;
 import org.springframework.web.servlet.ModelAndView;
 
@@ -145,6 +147,12 @@
         this.hostingFieldRepository.flush();
     }
 
+    @Override
+    @Transactional(readOnly = true)
+    public List<HostingField> findAll() {
+        return this.hostingFieldRepository.findAll();
+    }
+
     // Hosting 紐⑸줉�쓣 �뿊��濡� �떎�슫濡쒕뱶 �븳�떎.
     @Override
     public ModelAndView downloadExcel(HttpServletRequest request, Model model) {
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java
index 08d0ffc..2e4daf1 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java
@@ -6,6 +6,7 @@
 import kr.wisestone.owl.constant.MsgConstants;
 import kr.wisestone.owl.domain.CompanyField;
 import kr.wisestone.owl.domain.IspField;
+import kr.wisestone.owl.domain.Priority;
 import kr.wisestone.owl.exception.OwlRuntimeException;
 import kr.wisestone.owl.mapper.IspFieldMapper;
 import kr.wisestone.owl.repository.IspFieldRepository;
@@ -25,6 +26,7 @@
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.Model;
 import org.springframework.web.servlet.ModelAndView;
 
@@ -147,6 +149,12 @@
         this.ispFieldRepository.flush();
     }
 
+    @Override
+    @Transactional(readOnly = true)
+    public List<IspField> findAll() {
+        return this.ispFieldRepository.findAll();
+    }
+
     // Isp 紐⑸줉�쓣 �뿊��濡� �떎�슫濡쒕뱶 �븳�떎.
     @Override
     public ModelAndView downloadExcel(HttpServletRequest request, Model model) {
diff --git a/src/main/java/kr/wisestone/owl/web/controller/CompanyFieldController.java b/src/main/java/kr/wisestone/owl/web/controller/CompanyFieldController.java
index 8b4f065..23e9192 100644
--- a/src/main/java/kr/wisestone/owl/web/controller/CompanyFieldController.java
+++ b/src/main/java/kr/wisestone/owl/web/controller/CompanyFieldController.java
@@ -3,8 +3,10 @@
 import kr.wisestone.owl.constant.Constants;
 
 import kr.wisestone.owl.service.CompanyFieldService;
+import kr.wisestone.owl.util.ConvertUtil;
 import kr.wisestone.owl.web.condition.CompanyFieldCondition;
 import kr.wisestone.owl.web.form.CompanyFieldForm;
+import kr.wisestone.owl.web.form.IssueForm;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Pageable;
 import org.springframework.http.MediaType;
@@ -14,6 +16,7 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
@@ -93,5 +96,21 @@
     public ModelAndView downloadExcel(HttpServletRequest request, Model model) {
         return this.companyFieldService.downloadExcel(request, model);
     }
+
+    //  �뾽泥� Import �슜 �뿊�� �뀥�뵆由� �떎�슫濡쒕뱶
+    @RequestMapping(value = "/companyField/downloadExcelTemplate", method = RequestMethod.POST)
+    public ModelAndView downloadExcelImport(HttpServletRequest request, Model model) {
+        return this.companyFieldService.downloadExcelTemplate(request, model);
+    }
+
+    //  �뾽泥� �뿊�� �벑濡�
+    @RequestMapping(value = "/companyField/importExcel", method = RequestMethod.POST)
+    public @ResponseBody Map<String, Object> importExcel(MultipartHttpServletRequest request) throws Exception {
+        Map<String, Object> resJsonData = new HashMap<>();
+
+        this.companyFieldService.importExcel(request.getFile("file"));
+
+        return this.setSuccessMessage(resJsonData);
+    }
 }
 
diff --git a/src/main/java/kr/wisestone/owl/web/form/CompanyFieldForm.java b/src/main/java/kr/wisestone/owl/web/form/CompanyFieldForm.java
index 7432c6c..51d9f8c 100644
--- a/src/main/java/kr/wisestone/owl/web/form/CompanyFieldForm.java
+++ b/src/main/java/kr/wisestone/owl/web/form/CompanyFieldForm.java
@@ -22,6 +22,8 @@
     private Long statusId;
     private String statusName;
 
+    private Long registerId;    //  �벑濡앹옄 �븘�씠�뵒 - insert batch �뿉�꽌 �궗�슜
+
     private List<Long> removeIds = Lists.newArrayList();
 
     public CompanyFieldForm() {
@@ -146,4 +148,12 @@
     public void setStatusName(String statusName) {
         this.statusName = statusName;
     }
+
+    public Long getRegisterId() {
+        return registerId;
+    }
+
+    public void setRegisterId(Long registerId) {
+        this.registerId = registerId;
+    }
 }
diff --git a/src/main/webapp/WEB-INF/i18n/code_ko_KR.properties b/src/main/webapp/WEB-INF/i18n/code_ko_KR.properties
index 5132b05..4829040 100644
--- a/src/main/webapp/WEB-INF/i18n/code_ko_KR.properties
+++ b/src/main/webapp/WEB-INF/i18n/code_ko_KR.properties
@@ -39,6 +39,7 @@
 common.typeErrorDownloadWidget=\uB2E4\uC6B4\uB85C\uB4DC \uC704\uC82F \uC720\uD615 \uC624\uB958
 common.inProgressProjectStatus=\uC9C4\uD589 \uC911\uC778 \uD504\uB85C\uC81D\uD2B8 \uD604\uD669
 common.registerExcelIssue=\uC5D1\uC140\uB85C \uC774\uC288 \uB4F1\uB85D\uD558\uAE30
+common.registerExcelCompanyField=\uC5D1\uC140\uB85C \uC5C5\uCCB4 \uB4F1\uB85D\uD558\uAE30
 common.assignedToMeIssue=\uB098\uC5D0\uAC8C \uD560\uB2F9\uB41C \uC774\uC288
 common.managementRisk=\uC704\uD5D8 \uAD00\uB9AC
 common.registeredByMeIssue=\uB0B4\uAC00 \uB4F1\uB85D\uD55C \uC774\uC288 \uD604\uD669
diff --git a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
index 90f9b48..8abaac6 100644
--- a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
+++ b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
@@ -167,7 +167,7 @@
 EXCEL_CONDITIONS_NOT_EXIST = \uC5D1\uC140 \uB2E4\uC6B4\uB85C\uB4DC\uC5D0 \uD544\uC694\uD55C \uAC80\uC0C9 \uC870\uAC74\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
 EXCEL_EMPTY_CELL = \uC5D1\uC140 \uD5E4\uB354 \uBD80\uBD84 \uC140\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC5D1\uC140 \uC791\uC131 \uC591\uC2DD\uC5D0 \uBB38\uC81C\uAC00 \uC788\uC2B5\uB2C8\uB2E4.
 EXCEL_HEADER_EMPTY_CELL = \uC5D1\uC140 \uD5E4\uB354\uC5D0 \uBE48 \uC140\uC774 \uC788\uC2B5\uB2C8\uB2E4.
-EXCEL_IMPORT_ISSUE_TITLE_IS_NULL=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC774\uC288 \uC81C\uBAA9\uC774 \uC785\uB825\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
+EXCEL_IMPORT_ISSUE_TITLE_IS_NULL=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC774\uC288 \uC81C\uBAA9\uC774 \uC785\uB825\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
 EXCEL_IMPORT_PROJECT_KEY_IS_NULL=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uD504\uB85C\uC81D\uD2B8 \uD0A4\uAC00 \uC785\uB825\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
 EXCEL_IMPORT_PROJECT_NOT_EXIST=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uB41C \uD504\uB85C\uC81D\uD2B8 \uD0A4\uB85C \uAC80\uC0C9\uB418\uB294 \uD504\uB85C\uC81D\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
 EXCEL_IMPORT_ISSUE_TYPE_IS_NULL=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC774\uC288 \uD0C0\uC785 \uBA85\uC774 \uC785\uB825\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
@@ -184,6 +184,16 @@
 RESERVATION_EMAIL_TITLE=[OWL ITS] \uC5B4\uC81C \uC774\uC288 \uBC0F \uD65C\uB3D9 \uD604\uD669\uC785\uB2C8\uB2E4.
 REALTIME_EMAIL_TITLE=[OWL ITS] \uC2E4\uC2DC\uAC04 \uC774\uC288 \uBC0F \uD65C\uB3D9 \uD604\uD669\uC785\uB2C8\uB2E4.
 
+EXCEL_IMPORT_COMPANY_NAME_IS_NULL=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC5C5\uCCB4\uBA85\uC774 \uC785\uB825\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
+EXCEL_IMPORT_URL_IS_NULL=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C URL\uC774 \uC785\uB825\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
+EXCEL_IMPORT_ISP_NOT_EXIST=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uB41C ISP\uBA85\uC73C\uB85C \uAC80\uC0C9\uB418\uB294 ISP\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
+EXCEL_IMPORT_HOSTING_NOT_EXIST=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uB41C \uD638\uC2A4\uD305\uBA85\uC73C\uB85C \uAC80\uC0C9\uB418\uB294 \uD638\uC2A4\uD305\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
+EXCEL_IMPORT_PARENT_SECTOR_NOT_EQUAL=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uB41C \uC5C5\uC885(\uC911\uBD84\uB958)\uC740 \uC5C5\uC885(\uB300\uBD84\uB958)\uC5D0 \uC18D\uD574\uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
+EXCEL_IMPORT_COMPANY_TYPE_NOT_EXIST=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uB41C \uAE30\uC5C5\uAD6C\uBD84\uBA85\uC73C\uB85C \uAC80\uC0C9\uB418\uB294 \uAE30\uC5C5\uAD6C\uBD84\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
+EXCEL_IMPORT_PARENT_SECTOR_NOT_EXIST=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uB41C \uC5C5\uC885\uBA85\uC73C\uB85C \uAC80\uC0C9\uB418\uB294 \uC5C5\uC885(\uB300\uBD84\uB958)\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
+EXCEL_IMPORT_CHILD_SECTOR_NOT_EXIST=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uB41C \uC5C5\uC885\uBA85\uC73C\uB85C \uAC80\uC0C9\uB418\uB294 \uC5C5\uC885(\uC911\uBD84\uB958)\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
+EXCEL_IMPORT_REGION_NOT_EXIST=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uB41C \uC9C0\uC5ED\uBA85\uC73C\uB85C \uAC80\uC0C9\uB418\uB294 \uC9C0\uC5ED\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
+
 ISSUE_RESERVATION_VALUE_INVALID=\uC774\uC288 \uBC1C\uC0DD \uC608\uC57D\uC77C\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
 ISSUE_RESERVATION_NOT_EXIST=\uC774\uC288 \uBC1C\uC0DD \uC608\uC57D \uC815\uBCF4\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
 
diff --git a/src/main/webapp/i18n/ko/global.json b/src/main/webapp/i18n/ko/global.json
index 8e7bb48..d9beea3 100644
--- a/src/main/webapp/i18n/ko/global.json
+++ b/src/main/webapp/i18n/ko/global.json
@@ -994,7 +994,10 @@
         "enterSpecialCharacters": "�뾽泥� �씠由꾩뿉�뒗 �듅�닔 臾몄옄瑜� �엯�젰 �븷 �닔 �뾾�뒿�땲�떎.",
         "invalidTelFormat": "�쟾�솕踰덊샇 �삎�떇�씠 留욎� �븡�뒿�땲�떎. xxx-xxx-xxxx �삎�떇�쑝濡� �엯�젰�븯�꽭�슂.",
         "writeCompanyTel": "�쟾�솕踰덊샇瑜� �엯�젰�빐二쇱꽭�슂.",
-        "writeTel": "�쟾�솕踰덊샇瑜� �엯�젰�븯�뀛�빞 異붽��븷�닔 �엳�뒿�땲�떎."
+        "writeTel": "�쟾�솕踰덊샇瑜� �엯�젰�븯�뀛�빞 異붽��븷�닔 �엳�뒿�땲�떎.",
+        "registerExcelCompanyFields": "�뿊��濡� �뾽泥� �벑濡앺븯湲�",
+        "registerExcelUploadCompanyField": "�뿊�� �뾽濡쒕뱶 �뾽泥� �벑濡�",
+        "succeededCompanyFieldRegistration": "�뾽泥� �벑濡� �꽦怨�"
     },
     "ispField" : {
         "info": "ISP�젙蹂�",
diff --git a/src/main/webapp/scripts/app/companyField/companyField.js b/src/main/webapp/scripts/app/companyField/companyField.js
index 3e4628c..116a441 100644
--- a/src/main/webapp/scripts/app/companyField/companyField.js
+++ b/src/main/webapp/scripts/app/companyField/companyField.js
@@ -33,7 +33,7 @@
                         loadController : ["$q", function ($q) {
                             var deferred = $q.defer();
                             require(["companyFieldListController", 'jsTable', 'tableColumnGenerator', 'companyFieldService', 'modalFormAutoScroll'
-                                , 'companyFieldAddController', 'companyFieldModifyController'
+                                , 'companyFieldAddController', 'companyFieldModifyController', 'companyFieldImportExcelController'
                                 , 'formSubmit', 'jsShortCut', 'inputRegex'], function () {
                                 deferred.resolve();
                             });
diff --git a/src/main/webapp/scripts/app/companyField/companyFieldImportExcel.controller.js b/src/main/webapp/scripts/app/companyField/companyFieldImportExcel.controller.js
new file mode 100644
index 0000000..9d736c8
--- /dev/null
+++ b/src/main/webapp/scripts/app/companyField/companyFieldImportExcel.controller.js
@@ -0,0 +1,80 @@
+/**
+ * Created by wisestone on 2018-01-17.
+ */
+'use strict';
+
+define([
+        'app',
+        'angular'
+    ],
+    function (app, angular) {
+        app.controller('companyFieldImportExcelController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance', '$injector', '$controller', '$tableProvider', 'CompanyField', 'SweetAlert', '$filter', '$timeout',
+            function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, $injector, $controller, $tableProvider, CompanyField, SweetAlert, $filter, $timeout) {
+
+                $scope.fn = {
+                    cancel : cancel,    //  �뙘�뾽 李� �떕湲�
+                    formSubmit : formSubmit,    //  �뤌 �쟾�넚
+                    formCheck : formCheck,  //  �뤌 泥댄겕
+                    onFileSelect : onFileSelect, //  �뙆�씪 �뾽濡쒕뱶
+                };
+
+                $scope.vm = {
+                    form : {
+                        file : "",   //  �뾽濡쒕뱶�븯�뒗 Excel File
+                        fileName : ""
+                    },
+                    tab : "VIDEO"
+                };
+
+                //  �뙆�씪 �뾽濡쒕뱶
+                function onFileSelect($files) {
+                    $scope.vm.form.file = $files;
+
+                    if ($files.length > 0) {
+                        $scope.vm.form.fileName = $files[0].name;
+                    }
+                    else {
+                        $scope.vm.form.fileName = "";
+                    }
+                }
+
+                //  �뤌 泥댄겕
+                function formCheck() {
+                    if ($scope.vm.form.file.length < 1) {
+                        return true;
+                    }
+                    return false;
+                }
+
+                //  �뤌 �쟾�넚
+                function formSubmit() {
+                    $rootScope.spinner = true;
+
+                    CompanyField.importExcel({
+                        method : "POST",
+                        file : $scope.vm.form.file,
+                        //      data �냽�꽦�쑝濡� 蹂꾨룄�쓽 �뜲�씠�꽣 �쟾�넚
+                        fileFormDataName : "file"
+                    })
+                    .then(function (result) {
+                        if (result.data.message.status === "success") {
+                            $timeout(function () {
+                                SweetAlert.success($filter("translate")("companyField.succeededCompanyFieldRegistration"), result.data.message.message); // �벑濡� �꽦怨�
+                                $scope.fn.cancel();
+                                $rootScope.$broadcast("getCompanyFieldList");
+                            }, 1000);
+                        }
+                        else {
+                            SweetAlert.error($filter("translate")("companyField.failedCompanyFieldRegistration"), result.data.message.message); // �벑濡� �떎�뙣
+                        }
+
+                        $rootScope.spinner = false;
+                    });
+                }
+
+                function cancel() {
+                    $rootScope.$broadcast("closeLayer");    //  �뙘�뾽�씠 �뿴由ш퀬 �굹�꽌 js-multi, js-single �벑�뿉�꽌 body �씠踰ㅽ듃媛� �궇�븘媛��뒗 �쁽�긽 �닔�젙
+                    $uibModalInstance.dismiss('cancel');
+                }
+            }]);
+    });
diff --git a/src/main/webapp/scripts/app/companyField/companyFieldList.controller.js b/src/main/webapp/scripts/app/companyField/companyFieldList.controller.js
index 902cadf..fa84c74 100644
--- a/src/main/webapp/scripts/app/companyField/companyFieldList.controller.js
+++ b/src/main/webapp/scripts/app/companyField/companyFieldList.controller.js
@@ -19,6 +19,7 @@
                     add : add, //�뾽泥� �깮�꽦
                     makeSearchConditions : makeSearchConditions, //�뿊�� �떎�슫濡쒕뱶
                     removes : removes, //�뾽泥� �궘�젣
+                    importExcel : importExcel,  //  �뿊�� import 湲곕뒫 �뙘�뾽 �샇異�
                 };
 
                 //  蹂��닔
@@ -45,6 +46,11 @@
 
                 //  �뾽泥� 愿�由� 由ъ뒪�듃 遺덈윭�삤湲�
                 $scope.$on("getPageList", function () {
+                    $scope.fn.getPageList(0);
+                });
+
+                //  �뾽泥� 紐⑸줉 �뜲�씠�꽣 媛깆떊
+                $scope.$on("getCompanyFieldList", function () {
                     $scope.fn.getPageList(0);
                 });
 
@@ -157,24 +163,28 @@
                             // �쟾�솕踰덊샇 議고쉶�떆 �븯�씠�뵂 異붽� �빐�꽌 議고쉶
                             result.data.data.forEach(function (data) {
                                 if (data.tel != null && data.tel !== "") {
-                                    var tels = data.tel.substr(1, data.tel.indexOf("]")-1);
-                                    var telArr = tels.split(",");
+                                    if (data.tel.indexOf("[") !== -1){
+                                        var tels = data.tel.substr(1, data.tel.indexOf("]")-1);
+                                        var telArr = tels.split(",");
 
-                                    for (var i = 0; i < telArr.length; i++) {
-                                        let hyphen = telArr[i].trim();
-                                        telArr[i] = hyphen.replace(/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/, "$1-$2-$3");
-                                        if (telArr[i] === "") {
-                                            telArr.splice(i,1);
+                                        for (var i = 0; i < telArr.length; i++) {
+                                            let hyphen = telArr[i].trim();
+                                            telArr[i] = hyphen.replace(/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/, "$1-$2-$3");
+                                            if (telArr[i] === "") {
+                                                telArr.splice(i,1);
+                                            }
                                         }
+                                        data.tel = telArr.join();
                                     }
-                                    data.tel = telArr.join();
                                 }
                             });
 
                             // �씠硫붿씪 議고쉶�떆 諛곗뿴 �삎�깭 �젣嫄�
                             result.data.data.forEach(function (data) {
                                 if (data.email != null && data.email !== "") {
-                                    data.email = data.email.substr(1, data.email.indexOf("]")-1);
+                                    if (data.email.indexOf("[") !== -1){
+                                        data.email = data.email.substr(1, data.email.indexOf("]")-1);
+                                    }
                                 }
                             });
 
@@ -219,6 +229,16 @@
                     });
                 }
 
+                //  �뿊�� import �뙘�뾽 �샇異�
+                function importExcel() {
+                    $uibModal.open({
+                        templateUrl : 'views/companyField/companyFieldExcelImport.html',
+                        size : "lg",
+                        controller : 'companyFieldImportExcelController',
+                        backdrop : 'static'
+                    });
+                }
+
                 //  �뾽泥� �궘�젣
                 function removes() {
                     var removeIds = [];
diff --git a/src/main/webapp/scripts/components/companyField/companyField.service.js b/src/main/webapp/scripts/components/companyField/companyField.service.js
index 109e6ab..a2c259d 100644
--- a/src/main/webapp/scripts/components/companyField/companyField.service.js
+++ b/src/main/webapp/scripts/components/companyField/companyField.service.js
@@ -6,7 +6,7 @@
 define([
     'app'
 ], function (app) {
-    app.factory("CompanyField", ['$http', '$log', function ($http, $log) {
+    app.factory("CompanyField", ['$http', '$log', '$upload', function ($http, $log, $upload) {
         return {
             find : function (conditions) {
                 return $http.post("companyField/find", conditions).then(function (response) {
@@ -32,6 +32,13 @@
                     return response;
                 });
             },
+            importExcel : function (conditions) {
+                conditions.url = "companyField/importExcel";
+                return $upload.upload(conditions).then(function (response) {
+                    $log.debug("�뾽泥� Import 寃곌낵 : ", response);
+                    return response;
+                });
+            },
             removes : function (conditions) {
                 return $http.post("companyField/remove", conditions).then(function (response) {
                     $log.debug("�뾽泥� �궘�젣 寃곌낵 : ", response);
diff --git a/src/main/webapp/scripts/main.js b/src/main/webapp/scripts/main.js
index d2a94ba..b5a5c17 100644
--- a/src/main/webapp/scripts/main.js
+++ b/src/main/webapp/scripts/main.js
@@ -354,6 +354,7 @@
         'companyFieldListController' : 'app/companyField/companyFieldList.controller', // �뾽泥� 紐⑸줉 而⑦듃濡ㅻ윭
         'companyFieldAddController' : 'app/companyField/companyFieldAdd.controller', // �뾽泥� �깮�꽦 而⑦듃濡ㅻ윭
         'companyFieldModifyController' : 'app/companyField/companyFieldModify.controller', // �뾽泥� �닔�젙 而⑦듃濡ㅻ윭
+        'companyFieldImportExcelController' : 'app/companyField/companyFieldImportExcel.controller', // �뾽泥� �뿊�� �엫�룷�듃 而⑦듃濡ㅻ윭
 
         'companyFieldCategoryService' : 'components/companyFieldCategory/companyFieldCategory.service',  // �뾽泥� 移댄뀒怨좊━
 
diff --git a/src/main/webapp/views/companyField/companyFieldExcelImport.html b/src/main/webapp/views/companyField/companyFieldExcelImport.html
new file mode 100644
index 0000000..f4d20e8
--- /dev/null
+++ b/src/main/webapp/views/companyField/companyFieldExcelImport.html
@@ -0,0 +1,83 @@
+<div class="formModal">
+    <div class="modal-header faded smaller">
+        <div class="modal-title">
+            <strong translate="companyField.registerExcelCompanyFields">�뿊��濡� �뾽泥� �벑濡앺븯湲�</strong>
+        </div>
+        <button aria-label="Close" class="close" type="button" ng-click="fn.cancel()">
+            <span aria-hidden="true"> &times;</span>
+        </button>
+    </div>
+
+    <div class="modal-body">
+        <form role="form" name="companyFieldExcelImportForm">
+            <!--<div class="row">
+                <div class="col-lg-5">-->
+
+                    <button type="button"
+                            class="btn btn-success"
+                            form-submit="companyFieldExcelImportForm" make-search-conditions="fn.makeSearchConditions()"
+                            style="width:100%;"><i class="fa fa-file-excel-o"></i>&nbsp;<span
+                            translate="common.downloadExcel">�뿊�� �떎�슫濡쒕뱶</span>
+                    </button>
+
+                    <div class="form-group pdt10">
+                        <div class="filebox input-group">
+                            <input class="upload-name form-control"
+                                   placeholder="{{'users.pleaseSelectFile' | translate}}"
+                                   tabindex="-1"
+                                   disabled="disabled"
+                                   ng-model="vm.form.fileName">
+                            <label for="uploadFileField"><span translate="common.uploadExcel">�뿊�� �뾽濡쒕뱶</span></label>
+                            <input id="uploadFileField"
+                                   class="form-control"
+                                   type="file"
+                                   ng-file-select="fn.onFileSelect($files)"/>
+                        </div>
+                    </div>
+
+                    <button type="button" class="btn btn-md btn-primary bold"
+                            ng-show="$root.isDefined(vm.form.file)"
+                            style="width:100%;"
+                            ng-disabled="fn.formCheck()"
+                            ng-click="fn.formSubmit()"><span
+                            translate="companyField.registerExcelUploadCompanyField">�뿊�� �뾽濡쒕뱶 �뾽泥� �벑濡�</span>
+                    </button>
+                <!--</div>-->
+
+                <!--<div class="col-lg-7 bdl1">
+                    <div class="os-tabs-w">
+                        <div class="os-tabs-controls">
+                            <ul class="nav nav-tabs smaller">
+                                <li class="nav-item cursor">
+                                    <a class="nav-link" ng-class="{ 'active' : vm.tab == 'VIDEO' }"
+                                       ng-click="vm.tab = 'VIDEO'"><span
+                                            translate="issue.videoExample">�룞�쁺�긽 �삁�젣</span></a>
+                                </li>
+                            </ul>
+                        </div>
+
+                        <div class="tab-content">
+                            <div ng-show="vm.tab == 'VIDEO'">
+                                <video style="width:100%;" width="100%" height="300px"
+                                       src="/excelTemplate/excelExample_new.mp4" controls autoplay loop muted
+                                       preload="auto"></video>
+                            </div>
+                        </div>
+                    </div>
+                </div>-->
+            <!--</div>-->
+        </form>
+        <!--    �뾽泥� Excel Import �뀥�뵆由� �떎�슫濡쒕뱶 �뤌  -->
+        <form class="form-inline justify-content-sm-end"
+              method="post"
+              action="/companyField/downloadExcelTemplate"
+              name="companyFieldExcelImportForm">
+            <input type="hidden" name="conditions">
+        </form>
+    </div>
+
+    <div class="modal-footer buttons-on-right">
+        <button type="button" class="btn btn-md btn-grey" ng-click="fn.cancel()"><span
+                translate="common.close">�떕湲�</span></button>
+    </div>
+</div>
diff --git a/src/main/webapp/views/companyField/companyFieldList.html b/src/main/webapp/views/companyField/companyFieldList.html
index 936b537..ef1c543 100644
--- a/src/main/webapp/views/companyField/companyFieldList.html
+++ b/src/main/webapp/views/companyField/companyFieldList.html
@@ -76,6 +76,7 @@
                                     </button>
                                     <div aria-labelledby="dropdownMenuButton2" class="dropdown-menu left-menu"
                                          x-placement="bottom-start">
+                                        <a class="dropdown-item cursor" ng-click="fn.importExcel()"> <span translate="common.importExcel">Excel Import</span></a>
                                         <a class="dropdown-item cursor" form-submit="companyFieldListForm" make-search-conditions="fn.makeSearchConditions()"><span translate="common.allDownloadExcel">�뿊�� �떎�슫濡쒕뱶</span></a>
                                         <a class="dropdown-item cursor" ng-click="fn.removes()"> <span translate="common.selectDelete">�궘�젣</span></a>
                                     </div>
diff --git a/src/main/webapp/views/issue/issueExcelImport.html b/src/main/webapp/views/issue/issueExcelImport.html
index 44b0440..9f556ac 100644
--- a/src/main/webapp/views/issue/issueExcelImport.html
+++ b/src/main/webapp/views/issue/issueExcelImport.html
@@ -9,7 +9,7 @@
     </div>
 
     <div class="modal-body">
-        <form role="form" name="issueExcelImportFrom">
+        <form role="form" name="issueExcelImportForm">
             <div class="row">
                 <div class="col-lg-5">
                     <div class="form-group">
@@ -39,9 +39,9 @@
                                             type : '', maxlength : 200, autoResize : true, stopRemoveBodyEvent : true }"></js-autocomplete-single>
 
                     <div class="form-group mt-5">
-                        <label for="issueExcelImportFrom3"> <span translate="issue.issueType">�씠�뒋 ���엯</span> <code
+                        <label for="issueExcelImportForm3"> <span translate="issue.issueType">�씠�뒋 ���엯</span> <code
                                 class="highlighter-rouge">*</code></label>
-                        <select id="issueExcelImportFrom3"
+                        <select id="issueExcelImportForm3"
                                 name="issueType"
                                 class="form-control input-sm"
                                 ng-model="vm.form.issueTypeId"

--
Gitblit v1.8.0