--- src/main/webapp/WEB-INF/decorators.xml
+++ src/main/webapp/WEB-INF/decorators.xml
... | ... | @@ -48,6 +48,7 @@ |
| 48 | 48 |
<pattern>*/rss.do*</pattern> |
| 49 | 49 |
<pattern>*/SE2.2.1.O9186/*</pattern> |
| 50 | 50 |
<pattern>*/publish/*</pattern> |
| 51 |
+ <pattern>*/public/*</pattern> |
|
| 51 | 52 |
<pattern>*/pb/*</pattern> |
| 52 | 53 |
<pattern>*mageEditor*</pattern> |
| 53 | 54 |
|
--- src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp
... | ... | @@ -152,16 +152,32 @@ |
| 152 | 152 |
fn_loadAddActive(); |
| 153 | 153 |
var reader = new FileReader(); |
| 154 | 154 |
var extension = file.name.split('.').pop().toLowerCase();
|
| 155 |
- reader.onload = function(e) {
|
|
| 155 |
+ console.log('extension : ', extension);
|
|
| 156 |
+ reader.onload = function (e) {
|
|
| 156 | 157 |
setTimeout(() => { // 파일 읽기 완료 후 실행되도록 함
|
| 157 | 158 |
if (extension === 'xlsx') {
|
| 158 | 159 |
var data = new Uint8Array(e.target.result); |
| 159 |
- var workbook = XLSX.read(data, {type: 'array'});
|
|
| 160 |
+ var workbook = XLSX.read(data, { type: 'array' });
|
|
| 160 | 161 |
var firstSheet = workbook.Sheets[workbook.SheetNames[0]]; |
| 161 |
- var jsonData = XLSX.utils.sheet_to_json(firstSheet, {header: 1});
|
|
| 162 |
+ var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 });
|
|
| 163 |
+ console.log('xlsx jsonData : ', jsonData);
|
|
| 164 |
+ processExcelData(jsonData); |
|
| 165 |
+ } else if (extension === 'xls') {
|
|
| 166 |
+ console.log('xls extension detected');
|
|
| 167 |
+ var data = e.target.result; |
|
| 168 |
+ var workbook = XLSX.read(data, { type: 'binary' });
|
|
| 169 |
+ var firstSheet = workbook.Sheets[workbook.SheetNames[0]]; |
|
| 170 |
+ var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 });
|
|
| 171 |
+ console.log('xls jsonData : ', jsonData);
|
|
| 172 |
+ |
|
| 173 |
+ // 문제 데이터를 확인하는 함수 호출 |
|
| 174 |
+ findInvalidDBCharacters(jsonData); |
|
| 175 |
+ |
|
| 176 |
+ |
|
| 162 | 177 |
processExcelData(jsonData); |
| 163 | 178 |
} else if (extension === 'txt') {
|
| 164 | 179 |
var textData = e.target.result; |
| 180 |
+ console.log('txt data : ', textData);
|
|
| 165 | 181 |
processTextData(textData); |
| 166 | 182 |
} else {
|
| 167 | 183 |
alert('지원되지 않는 파일 형식입니다.');
|
... | ... | @@ -171,14 +187,40 @@ |
| 171 | 187 |
}; |
| 172 | 188 |
if (extension === 'xlsx') {
|
| 173 | 189 |
reader.readAsArrayBuffer(file); |
| 190 |
+ } else if (extension === 'xls') {
|
|
| 191 |
+ reader.readAsBinaryString(file); // xls 파일에 적절한 read 메서드 호출 |
|
| 174 | 192 |
} else if (extension === 'txt') {
|
| 175 | 193 |
reader.readAsText(file); |
| 194 |
+ } else {
|
|
| 195 |
+ alert('지원되지 않는 파일 형식입니다.');
|
|
| 176 | 196 |
} |
| 177 | 197 |
} |
| 178 | 198 |
} |
| 179 | 199 |
|
| 200 |
+//문제 데이터를 확인하는 함수 |
|
| 201 |
+function findInvalidDBCharacters(jsonData) {
|
|
| 202 |
+ console.log('DB 입력 값 검사 중...');
|
|
| 203 |
+ const invalidCharPattern = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; // 4바이트 유니코드 문자 (이모지 등) |
|
| 204 |
+ for (let rowIndex = 0; rowIndex < jsonData.length; rowIndex++) {
|
|
| 205 |
+ const row = jsonData[rowIndex]; |
|
| 206 |
+ if (Array.isArray(row)) {
|
|
| 207 |
+ for (let colIndex = 0; colIndex < row.length; colIndex++) {
|
|
| 208 |
+ const cell = row[colIndex]; |
|
| 209 |
+ if (typeof cell === 'string' && invalidCharPattern.test(cell)) {
|
|
| 210 |
+ console.warn('허용되지 않는 문자: row', rowIndex + 1,', col ', colIndex + 1, ', value:', cell);
|
|
| 211 |
+ // 허용되지 않는 문자를 제거 (선택 사항) |
|
| 212 |
+ row[colIndex] = cell.replace(invalidCharPattern, ''); |
|
| 213 |
+ console.log('수정된 값:', row[colIndex]);
|
|
| 214 |
+ } |
|
| 215 |
+ } |
|
| 216 |
+ } |
|
| 217 |
+ } |
|
| 218 |
+} |
|
| 219 |
+ |
|
| 220 |
+ |
|
| 180 | 221 |
// 엑셀 데이터 처리 함수 |
| 181 | 222 |
function processExcelData(data) {
|
| 223 |
+ console.log('processExcelData: ', processExcelData);
|
|
| 182 | 224 |
var keys = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; |
| 183 | 225 |
var tableData = []; |
| 184 | 226 |
var totalRows = data.length - 2; // 전체 데이터 수 (1, 2행 제외) |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?