From d25c836e18acb377ebaca7f1ea494264f9fb26f0 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Fri, 10 Jan 2025 09:43:00 +0900 Subject: [PATCH] =?UTF-8?q?fax=EB=B0=9C=EC=86=A1=20=EC=97=91=EC=85=80?= =?UTF-8?q?=EB=B6=88=EB=9F=AC=EC=98=A4=EA=B8=B0=20.xls=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/js/user/fax/exelUpload.js | 41 ++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/main/webapp/js/user/fax/exelUpload.js b/src/main/webapp/js/user/fax/exelUpload.js index 17da2030..526f148b 100644 --- a/src/main/webapp/js/user/fax/exelUpload.js +++ b/src/main/webapp/js/user/fax/exelUpload.js @@ -232,7 +232,22 @@ 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; + processTextData(textData); } else { alert('지원되지 않는 파일 형식입니다.'); } @@ -241,7 +256,31 @@ 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]); + } + } + } } }