From 4531dc86c6262c8baf197c8bd265e1812982f13c Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Fri, 10 Jan 2025 09:28:29 +0900 Subject: [PATCH] =?UTF-8?q?=EC=97=91=EC=85=80=EC=97=85=EB=A1=9C=EB=93=9C?= =?UTF-8?q?=20=EC=84=A4=EB=AA=85=20=EB=B0=8F=20=EC=9D=B4=EB=AA=A8=EC=A7=80?= =?UTF-8?q?=20=EC=A0=9C=EA=B1=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsp/web/addr/include/addrListforExcel.jsp | 6 +-- .../fax/addr/include/FaxAddrListforExcel.jsp | 37 ++++++++++++++++++- .../WEB-INF/jsp/web/fax/faxDataView.jsp | 2 +- .../include/msgDataIncludeExcel.jsp | 37 ++++++++++++++++++- .../msgdata/include/msgDataIncludeExcel.jsp | 37 ++++++++++++++++++- 5 files changed, 110 insertions(+), 9 deletions(-) diff --git a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp index 05bd9b7a..d7546594 100644 --- a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp @@ -160,17 +160,14 @@ function excelFileChange(file) { var workbook = XLSX.read(data, { type: 'array' }); var firstSheet = workbook.Sheets[workbook.SheetNames[0]]; var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 }); - console.log('xlsx jsonData : ', jsonData); // 문제 데이터를 확인하는 함수 호출 findInvalidDBCharacters(jsonData); processExcelData(jsonData); } else if (extension === 'xls') { - console.log('xls extension detected'); var data = e.target.result; var workbook = XLSX.read(data, { type: 'binary' }); var firstSheet = workbook.Sheets[workbook.SheetNames[0]]; var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 }); - console.log('xls jsonData : ', jsonData); // 문제 데이터를 확인하는 함수 호출 findInvalidDBCharacters(jsonData); @@ -179,7 +176,6 @@ function excelFileChange(file) { processExcelData(jsonData); } else if (extension === 'txt') { var textData = e.target.result; - console.log('txt data : ', textData); processTextData(textData); } else { alert('지원되지 않는 파일 형식입니다.'); @@ -322,7 +318,7 @@ $(document).on("click", "#duplicationChkAll", function(e) {

- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다.

- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.

-

- 구분선(|), 역슬래시(\, ₩), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.

+

- 구분선(|), 역슬래시(\, ₩), 큰따옴표("), 이모지(이모티콘) 등 발송불가 특수문자는 저장되지 않습니다.

- 이름 200byte, [*1*]~[*4*] 200byte, 메모 250byte까지 입력 가능합니다.

- 주소록 등록이 어려우신 경우에는 주소록 입력대행 메뉴를 이용하실 수 있습니다.

diff --git a/src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforExcel.jsp b/src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforExcel.jsp index 9994d250..adc9c629 100644 --- a/src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforExcel.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforExcel.jsp @@ -139,6 +139,19 @@ function excelFileChange(file) { var workbook = XLSX.read(data, {type: 'array'}); var firstSheet = workbook.Sheets[workbook.SheetNames[0]]; var jsonData = XLSX.utils.sheet_to_json(firstSheet, {header: 1}); + // 문제 데이터를 확인하는 함수 호출 + findInvalidDBCharacters(jsonData); + processExcelData(jsonData); + } else if (extension === 'xls') { + var data = e.target.result; + var workbook = XLSX.read(data, { type: 'binary' }); + var firstSheet = workbook.Sheets[workbook.SheetNames[0]]; + var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 }); + + // 문제 데이터를 확인하는 함수 호출 + findInvalidDBCharacters(jsonData); + + processExcelData(jsonData); } else if (extension === 'txt') { var textData = e.target.result; @@ -151,12 +164,34 @@ function excelFileChange(file) { }; if (extension === 'xlsx') { reader.readAsArrayBuffer(file); + } else if (extension === 'xls') { + reader.readAsBinaryString(file); // xls 파일에 적절한 read 메서드 호출 } else if (extension === 'txt') { reader.readAsText(file); } } } +//문제 데이터를 확인하는 함수 +function findInvalidDBCharacters(jsonData) { + console.log('DB 입력 값 검사 중...'); + const invalidCharPattern = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; // 4바이트 유니코드 문자 (이모지 등) + for (let rowIndex = 0; rowIndex < jsonData.length; rowIndex++) { + const row = jsonData[rowIndex]; + if (Array.isArray(row)) { + for (let colIndex = 0; colIndex < row.length; colIndex++) { + const cell = row[colIndex]; + if (typeof cell === 'string' && invalidCharPattern.test(cell)) { + console.warn('허용되지 않는 문자: row', rowIndex + 1,', col ', colIndex + 1, ', value:', cell); + // 허용되지 않는 문자를 제거 (선택 사항) + row[colIndex] = cell.replace(invalidCharPattern, ''); + console.log('수정된 값:', row[colIndex]); + } + } + } + } +} + // 엑셀 데이터 처리 함수 function processExcelData(data) { var keys = ['A', 'B', 'C']; @@ -249,7 +284,7 @@ $(document).on("click", "#duplicationChkAll", function(e) {

- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다.

- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.

-

- 구분선(|), 역슬래시(\, ₩), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.

+

- 구분선(|), 역슬래시(\, ₩), 큰따옴표("), 이모지(이모티콘) 등 발송불가 특수문자는 저장되지 않습니다.

- 이름 200byte, 메모 250byte까지 입력 가능합니다.

- 팩스 번호는 지역번호(02, 031, 033 등), 타사부가번호(030*, 050*, 060, 070, 080, 1**)로 시작하는 번호만 발송 가능합니다.

- 주소록 등록이 어려우신 경우에는 주소록 입력대행 메뉴를 이용하실 수 있습니다.

diff --git a/src/main/webapp/WEB-INF/jsp/web/fax/faxDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/fax/faxDataView.jsp index 76f490fb..cb2e332e 100644 --- a/src/main/webapp/WEB-INF/jsp/web/fax/faxDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/fax/faxDataView.jsp @@ -667,7 +667,7 @@

- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다.

- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.

-

- 구분선(|), 역슬래시(\, ₩), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.

+

- 구분선(|), 역슬래시(\, ₩), 큰따옴표("), 이모지(이모티콘) 등 발송불가 특수문자는 저장되지 않습니다.

- 이름 200byte, 메모 250byte까지 입력 가능합니다.

- 팩스 번호는 지역번호(02, 031, 033 등), 타사부가번호(030*, 050*, 060, 070, 080, 1**)로 시작하는 번호만 발송 가능합니다.

- 주소록 등록이 어려우신 경우에는 주소록 입력대행 메뉴를 이용하실 수 있습니다.

diff --git a/src/main/webapp/WEB-INF/jsp/web/msgcampain/include/msgDataIncludeExcel.jsp b/src/main/webapp/WEB-INF/jsp/web/msgcampain/include/msgDataIncludeExcel.jsp index 7f87d21f..936d538e 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgcampain/include/msgDataIncludeExcel.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgcampain/include/msgDataIncludeExcel.jsp @@ -337,6 +337,19 @@ function excelFileChange(file) { var workbook = XLSX.read(data, {type: 'array'}); var firstSheet = workbook.Sheets[workbook.SheetNames[0]]; var jsonData = XLSX.utils.sheet_to_json(firstSheet, {header: 1}); + // 문제 데이터를 확인하는 함수 호출 + findInvalidDBCharacters(jsonData); + processExcelData(jsonData); + } else if (extension === 'xls') { + var data = e.target.result; + var workbook = XLSX.read(data, { type: 'binary' }); + var firstSheet = workbook.Sheets[workbook.SheetNames[0]]; + var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 }); + + // 문제 데이터를 확인하는 함수 호출 + findInvalidDBCharacters(jsonData); + + processExcelData(jsonData); } else if (extension === 'txt') { var textData = e.target.result; @@ -349,12 +362,34 @@ function excelFileChange(file) { }; if (extension === 'xlsx') { reader.readAsArrayBuffer(file); + } else if (extension === 'xls') { + reader.readAsBinaryString(file); // xls 파일에 적절한 read 메서드 호출 } else if (extension === 'txt') { reader.readAsText(file); } } } +//문제 데이터를 확인하는 함수 +function findInvalidDBCharacters(jsonData) { + console.log('DB 입력 값 검사 중...'); + const invalidCharPattern = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; // 4바이트 유니코드 문자 (이모지 등) + for (let rowIndex = 0; rowIndex < jsonData.length; rowIndex++) { + const row = jsonData[rowIndex]; + if (Array.isArray(row)) { + for (let colIndex = 0; colIndex < row.length; colIndex++) { + const cell = row[colIndex]; + if (typeof cell === 'string' && invalidCharPattern.test(cell)) { + console.warn('허용되지 않는 문자: row', rowIndex + 1,', col ', colIndex + 1, ', value:', cell); + // 허용되지 않는 문자를 제거 (선택 사항) + row[colIndex] = cell.replace(invalidCharPattern, ''); + console.log('수정된 값:', row[colIndex]); + } + } + } + } +} + // 엑셀 데이터 처리 함수 function processExcelData(data) { @@ -686,7 +721,7 @@ function popMore(e){

- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다.

- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.

-

- 구분선(|), 역슬래시(\, ₩), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.

+

- 구분선(|), 역슬래시(\, ₩), 큰따옴표("), 이모지(이모티콘) 등 발송불가 특수문자는 저장되지 않습니다.

- 이름 200byte, [*1*]~[*4*] 200byte, 메모 250byte까지 입력 가능합니다.

- 주소록 등록이 어려우신 경우에는 주소록 입력대행 메뉴를 이용하실 수 있습니다.

diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/include/msgDataIncludeExcel.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/include/msgDataIncludeExcel.jsp index f9e00b83..e73d8aa2 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/include/msgDataIncludeExcel.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/include/msgDataIncludeExcel.jsp @@ -387,6 +387,19 @@ function excelFileChange(file) { var workbook = XLSX.read(data, {type: 'array'}); var firstSheet = workbook.Sheets[workbook.SheetNames[0]]; var jsonData = XLSX.utils.sheet_to_json(firstSheet, {header: 1}); + // 문제 데이터를 확인하는 함수 호출 + findInvalidDBCharacters(jsonData); + processExcelData(jsonData); + } else if (extension === 'xls') { + var data = e.target.result; + var workbook = XLSX.read(data, { type: 'binary' }); + var firstSheet = workbook.Sheets[workbook.SheetNames[0]]; + var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 }); + + // 문제 데이터를 확인하는 함수 호출 + findInvalidDBCharacters(jsonData); + + processExcelData(jsonData); } else if (extension === 'txt') { var textData = e.target.result; @@ -399,12 +412,34 @@ function excelFileChange(file) { }; if (extension === 'xlsx') { reader.readAsArrayBuffer(file); + } else if (extension === 'xls') { + reader.readAsBinaryString(file); // xls 파일에 적절한 read 메서드 호출 } else if (extension === 'txt') { reader.readAsText(file); } } } +//문제 데이터를 확인하는 함수 +function findInvalidDBCharacters(jsonData) { + console.log('DB 입력 값 검사 중...'); + const invalidCharPattern = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; // 4바이트 유니코드 문자 (이모지 등) + for (let rowIndex = 0; rowIndex < jsonData.length; rowIndex++) { + const row = jsonData[rowIndex]; + if (Array.isArray(row)) { + for (let colIndex = 0; colIndex < row.length; colIndex++) { + const cell = row[colIndex]; + if (typeof cell === 'string' && invalidCharPattern.test(cell)) { + console.warn('허용되지 않는 문자: row', rowIndex + 1,', col ', colIndex + 1, ', value:', cell); + // 허용되지 않는 문자를 제거 (선택 사항) + row[colIndex] = cell.replace(invalidCharPattern, ''); + console.log('수정된 값:', row[colIndex]); + } + } + } + } +} + // 엑셀 데이터 처리 함수 function processExcelData(data) { @@ -761,7 +796,7 @@ $(document).on('click', '#errorExcelBtn', function() {

- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다.

- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.

-

- 구분선(|), 역슬래시(\, ₩), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.

+

- 구분선(|), 역슬래시(\, ₩), 큰따옴표("), 이모지(이모티콘) 등 발송불가 특수문자는 저장되지 않습니다.

- 이름 200byte, [*1*]~[*4*] 200byte, 메모 250byte까지 입력 가능합니다.

- 주소록 등록이 어려우신 경우에는 주소록 입력대행 메뉴를 이용하실 수 있습니다.