|
|
/************************************************************************************************* |
|
|
* 프로그램명 : 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("<td"); |
|
|
|
|
|
if (tdStart == -1) |
|
|
break; |
|
|
|
|
|
brCheck = -1; |
|
|
brCheck2 = -1; |
|
|
spaceCheck = -1; |
|
|
endTD = -1; |
|
|
fontCheck = -1; |
|
|
|
|
|
tdEnd = form.indexOf(">", tdStart + 1); |
|
|
if (tdEnd == -1) |
|
|
break; |
|
|
endTD = form.indexOf("</td>", tdEnd + 1); |
|
|
|
|
|
// HWP |
|
|
brCheck = form.indexOf("<br>", tdEnd + 1); |
|
|
// HWP2002 |
|
|
brCheck2 = (form.indexOf(" ", tdEnd + 1)); |
|
|
// Excel 2000 |
|
|
spaceCheck = (form.indexOf((" "), tdEnd + 1)); |
|
|
// Excel 97 |
|
|
fontCheck = form.indexOf(("<font face=\"돋움\"> </font>"), tdEnd + 1); |
|
|
|
|
|
// // 아래는 액셀XP 에서 올린 문서에서 수식입력윈도우가 가져지 보이지 않는 원인을 해결한 것임 |
|
|
// modifyed by 구경모 # div태그의 특징인 줄바꾸기의 공백남기는특성을 안하기위해 span으로 변경(<div/div <span/span) |
|
|
sInsert_EXCEL = " style='cursor: pointer;'><span id='cell_" + tdCount |
|
|
+ "'><img src='../images/blank.gif' width='0' height='0' border='0'></span>"; |
|
|
sInsert_HWP = " style='cursor: pointer;'><span id='cell_" + tdCount |
|
|
+ "'><img src='../images/blank.gif' width='0' height='0' border='0'></span>"; |
|
|
sInsert_TXT = " style='cursor: pointer;'><span id='cell_" + tdCount |
|
|
+ "'><img src='../images/blank.gif' width='0' height='0' border='0'></span>"; |
|
|
|
|
|
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("<td"); |
|
|
if (tdStart == -1) |
|
|
break; |
|
|
tdEnd = form.indexOf(">", tdStart + 1); |
|
|
if (tdEnd == -1) |
|
|
break; |
|
|
|
|
|
brCheck = -1; |
|
|
brCheck2 = -1; |
|
|
spaceCheck = -1; |
|
|
endTD = -1; |
|
|
fontCheck = -1; |
|
|
|
|
|
endTD = form.indexOf("</td>", tdEnd + 1); |
|
|
|
|
|
if (tdCount == itemNumList[index]) { |
|
|
|
|
|
// modifyed by 구경모 # div태그의 특징인 줄바꾸기의 공백남기는특성을 안하기위해 span으로 변경(<div/div <span/span) |
|
|
inStr = "<span id='cell_" + index |
|
|
+ "'><img src='../images/blank.gif' width='0' height='0' border='0'></span>"; |
|
|
inEXCEL = " style='cursor: pointer; height=65'><span id='cell_" + index |
|
|
+ "'><img src='../images/blank.gif' width='0' height='0' border='0'></span>"; |
|
|
inHWP = "<span id='cell_" + index |
|
|
+ "'><img src='../images/blank.gif' width='0' height='0' border='0'></span>"; |
|
|
// ////////////////////////////////// |
|
|
|
|
|
// HWP |
|
|
brCheck = form.indexOf("<br>", tdEnd + 1); |
|
|
|
|
|
// HWP2002 |
|
|
brCheck2 = form.indexOf(" ", tdEnd + 1); |
|
|
|
|
|
// Excel 2000 |
|
|
spaceCheck = form.indexOf((" "), tdEnd + 1); |
|
|
|
|
|
// Excel 97 |
|
|
fontCheck = form.indexOf(("<font face=\"돋움\"> </font>"), 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("<br></", "</"); |
|
|
|
|
|
return result; |
|
|
} |
|
|
|
|
|
/** |
|
|
* @param strOnLoad the strOnLoad to set |
|
|
*/ public void setStrOnLoad(StringBuilder strOnLoad) { |
|
|
this.strOnLoad = strOnLoad; |
|
|
} |
|
|
}
|
|
|
|