/************************************************************************************************* * 프로그램명 : MTable.java 프로그램설명 : 집계문서의 표 기본정보 처리 작성자 : 강원중 작성일 : 2003.12.03 변경일 : 2004.09.16 **************************************************************************************************/ package kr.co.kihyun.moumi.doc.table; import java.util.List; public class TableDefine { private StringBuilder strOnLoad = new StringBuilder(); // //////////////////insertDiv요기는 양식등록일때 사용함///////////////////////////////////////////////////////////// public String insertDiv(String form, List tdList, int iTRCount) { if (form == null) return null; // ban lower case form = form.toLowerCase(); StringBuilder sInserted = new StringBuilder(); int tdCount = 0; int tdStart = 0; int tdEnd = 0; form = form.replaceAll(">( )*( )+<", "> <"); // 빈 셀중에 스페이스가 들어있는 것을 ' '로 바꿔줌(한글용) form = form.replaceAll(">( )+<", "> <"); // 빈 셀중에 스페이스가 들어있는 것을 ' '로 바꿔줌(한글용) int brCheck = -1; int brCheck2 = -1; int spaceCheck = -1; int endTD = -1; int fontCheck = -1; String sInsert_EXCEL = ""; String sInsert_HWP = ""; String sInsert_TXT = ""; while (true) { tdStart = form.indexOf("", tdStart + 1); if (tdEnd == -1) break; endTD = form.indexOf("", tdEnd + 1); // HWP brCheck = form.indexOf("
", tdEnd + 1); // HWP2002 brCheck2 = (form.indexOf(" ", tdEnd + 1)); // Excel 2000 spaceCheck = (form.indexOf((" "), tdEnd + 1)); // Excel 97 fontCheck = form.indexOf((" "), tdEnd + 1); // // 아래는 액셀XP 에서 올린 문서에서 수식입력윈도우가 가져지 보이지 않는 원인을 해결한 것임 // modifyed by 구경모 # div태그의 특징인 줄바꾸기의 공백남기는특성을 안하기위해 span으로 변경(
"; sInsert_HWP = " style='cursor: pointer;'>"; sInsert_TXT = " style='cursor: pointer;'>"; if ((tdStart < spaceCheck) && (endTD > spaceCheck)) { this.strOnLoad.append("changeCell(this, "); this.strOnLoad.append(tdCount); this.strOnLoad.append(");"); sInserted.append(form.substring(0, tdEnd)); sInserted.append(sInsert_EXCEL);// // 셀윈도우 입력하는 부분 form = form.substring(tdEnd + 1, form.length()); } else if ((tdStart < fontCheck) && (endTD > fontCheck)) { this.strOnLoad.append("changeCell(this, "); this.strOnLoad.append(tdCount); this.strOnLoad.append(");"); sInserted.append(form.substring(0, tdEnd) + sInsert_EXCEL);// // 셀윈도우 입력하는 부분 form = form.substring(tdEnd + 1, form.length()); } else if ((tdStart < brCheck) && (endTD > brCheck)) { this.strOnLoad.append("changeCell(this, "); this.strOnLoad.append(tdCount); this.strOnLoad.append(");"); sInserted.append(form.substring(0, tdEnd)); sInserted.append(sInsert_HWP);// // 셀윈도우 입력하는 부분 form = form.substring(tdEnd + 1, form.length()); } else if ((tdStart < brCheck2) && (endTD > brCheck2)) { this.strOnLoad.append("changeCell(this, "); this.strOnLoad.append(tdCount); this.strOnLoad.append(");"); sInserted.append(form.substring(0, tdEnd)); sInserted.append(sInsert_HWP);// // 셀윈도우 입력하는 부분 form = form.substring(tdEnd + 1, form.length()); } else { sInserted.append(form.substring(0, tdEnd)); sInserted.append(sInsert_TXT);// // 셀윈도우 입력하는 부분 form = form.substring(tdEnd + 1, form.length()); } tdCount++; } sInserted.append(form); String result = sInserted.toString().replaceAll("> <", "> <"); return result; } public String getStrOnLoad() { return strOnLoad.toString(); } public static String insertDiv(String form, int[] itemNumList) { if (form == null) return null; StringBuilder inBuf = new StringBuilder(); int tdCount = 0; int tdStart; int tdEnd; int index = 0; int brCheck = -1; int brCheck2 = -1; int spaceCheck = -1; int endTD = -1; int fontCheck = -1; String inStr = ""; String inEXCEL = ""; String inHWP = ""; while (true) { if (index > itemNumList.length - 1) break; tdStart = form.indexOf("", tdStart + 1); if (tdEnd == -1) break; brCheck = -1; brCheck2 = -1; spaceCheck = -1; endTD = -1; fontCheck = -1; endTD = form.indexOf("", tdEnd + 1); if (tdCount == itemNumList[index]) { // modifyed by 구경모 # div태그의 특징인 줄바꾸기의 공백남기는특성을 안하기위해 span으로 변경(
"; inEXCEL = " style='cursor: pointer; height=65'>"; inHWP = ""; // ////////////////////////////////// // HWP brCheck = form.indexOf("
", tdEnd + 1); // HWP2002 brCheck2 = form.indexOf(" ", tdEnd + 1); // Excel 2000 spaceCheck = form.indexOf((" "), tdEnd + 1); // Excel 97 fontCheck = form.indexOf((" "), tdEnd + 1); if ((tdStart < spaceCheck) && (endTD > spaceCheck)) { inBuf.append(form.substring(0, tdEnd)); inBuf.append(inEXCEL);// // 셀윈도우 입력하는 부분 form = form.substring(tdEnd + 1, form.length()); } else if ((tdStart < fontCheck) && (endTD > fontCheck)) { inBuf.append(form.substring(0, tdEnd)); inBuf.append(inEXCEL);// // 셀윈도우 입력하는 부분 form = form.substring(tdEnd + 1, form.length()); } else if ((tdStart < brCheck) && (endTD > brCheck)) { inBuf.append(form.substring(0, tdEnd + 1)); inBuf.append(inHWP);// // 셀윈도우 입력하는 부분 form = form.substring(tdEnd + 1, form.length()); } else if ((tdStart < brCheck2) && (endTD > brCheck2)) { inBuf.append(form.substring(0, tdEnd + 1)); inBuf.append(inHWP);// // 셀윈도우 입력하는 부분 form = form.substring(tdEnd + 1, form.length()); } else { inBuf.append(form.substring(0, tdEnd + 1)); inBuf.append(inStr); form = form.substring(tdEnd + 1, form.length()); } index++; } else { inBuf.append(form.substring(0, tdEnd + 1)); form = form.substring(tdEnd + 1, form.length()); } tdCount++; } inBuf.append(form); String result = inBuf.toString().replaceAll("> <", "><"); result = result.replaceAll("> <", "><"); result = result.replaceAll("