/** * * @author : 이호영 * @fileName : alimtalkExcel.js * @date : 2023.02.21 * @description : 알림톡 excel 관련된 fuction .js * =========================================================== * DATE AUTHOR NOTE * ----------------------------------------------------------- * * 2023.02.21 이호영 최초 생성 * * * */ $(document).ready(function(){ //치환문자 없는 엑섹불러오기 버튼 클릭시 파일 첨부 실행 $('.c1').click(function(){ // 엑셀파일 불러오기 선택 시 $("#excelFile01").click(); }); //치환문자 있는 엑섹불러오기 버튼 클릭시 파일 첨부 실행 $('.c3').click(function(){ // 엑셀파일 불러오기 선택 시 $("#excelFile").click(); }); }); function excelAdd(){ var files = document.getElementById('excelFile01').files; var filename = files[0].name; var extension = filename.substring(filename.lastIndexOf(".")).toUpperCase(); if (extension == '.XLS' || extension == '.XLSX') { excelFileToJSON01(files[0]); }else{ alert("엑셀 파일을 첨부해주세요."); } } /** * 엑셀 파일 불러오기 */ function excelExport01() { var files = document.getElementById('excelFile01').files; if(files.length==0){ alert("파일을 선택해주세요."); return; } // (치환문자가 있는)다른 형식의 값이 있으면 초기화 fn_viewDataInit02(); var filename = files[0].name; $('#excelNm01').val(filename); // var extension = filename.substring(filename.lastIndexOf(".")).toUpperCase(); // if (extension == '.XLS' || extension == '.XLSX') { // excelFileToJSON01(files[0]); // }else{ // alert("엑셀 파일을 첨부해주세요."); // } } /** * 변수 포함한 엑셀 파일 불러오기 */ function excelExport02() { var files = document.getElementById('excelFile').files; if(files.length==0){ alert("파일을 선택해주세요."); return; } // (치환문자가 없는)다른 형식의 값이 있으면 초기화 fn_viewDataInit01(); // fn_viewDataInit02(); var filename = files[0].name; var extension = filename.substring(filename.lastIndexOf(".")).toUpperCase(); if (extension == '.XLS' || extension == '.XLSX') { excelFileToJSON02(files[0]); }else{ alert("엑셀 파일을 첨부해주세요."); } } /** * 엑셀 정보 json으로 변환 */ function excelFileToJSON01(file){ /* * 시트 row 삭제 function 시작 * * */ const ec = (r, c) => { return XLSX.utils.encode_cell({r:r,c:c}) } const delete_row = (ws, row_index) => { let range = XLSX.utils.decode_range(ws["!ref"]) for(var R = row_index; R < range.e.r; ++R){ for(var C = range.s.c; C <= range.e.c; ++C){ ws[ec(R, C)] = ws[ec(R+1, C)] } } range.e.r-- ws['!ref'] = XLSX.utils.encode_range(range.s, range.e) } /* * 시트 row 삭제 function 끝 * * */ try { var reader = new FileReader(); reader.readAsBinaryString(file); reader.onload = function(e) { var data = e.target.result; var workbook = XLSX.read(data, { type : 'binary' }); var result = {}; //첫번째 시트 정보 json으로 변환 var firstSheetName = workbook.SheetNames[0]; //첫번째 시트의 첫번째 로우 삭제 delete_row(workbook.Sheets[firstSheetName], 0); var jsonData = XLSX.utils.sheet_to_json(workbook.Sheets[firstSheetName]); displayJsonToHtmlTable01(jsonData); } }catch(e){ console.error(e); } } /** * 엑셀 정보 json으로 변환 */ function excelFileToJSON02(file){ try { var reader = new FileReader(); reader.readAsBinaryString(file); reader.onload = function(e) { var data = e.target.result; var workbook = XLSX.read(data, { type : 'binary' }); var result = {}; //첫번째 시트 정보 json으로 변환 var firstSheetName = workbook.SheetNames[0]; var jsonData = XLSX.utils.sheet_to_json(workbook.Sheets[firstSheetName]); displayJsonToHtmlTable02(jsonData); } }catch(e){ console.error(e); } } /** * 변수 없는 엑셀 json 정보를 테이블로 그려주기 */ function displayJsonToHtmlTable01(jsonData){ var addHtml = '
$PHONE$
' +'\t$NAME$
' +'\t$HEADTITLE$
' +'$ROWTEXT$
' +'\t$ROWTEXT$
' +'\t