knu project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

218 lines
7.5 KiB

/*************************************************************************************************
* 프로그램명 : 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(">(&nbsp;)*( )+<", ">&nbsp;<"); // 빈 셀중에 스페이스가 들어있는 것을 '&nbsp'로 바꿔줌(한글용)
form = form.replaceAll(">(&nbsp;)+<", ">&nbsp;<"); // 빈 셀중에 스페이스가 들어있는 것을 '&nbsp'로 바꿔줌(한글용)
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("&nbsp;", tdEnd + 1));
// Excel 2000
spaceCheck = (form.indexOf((" "), tdEnd + 1));
// Excel 97
fontCheck = form.indexOf(("<font face=\"돋움\">&nbsp;</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(">&nbsp;<", "> <");
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("&nbsp;", tdEnd + 1);
// Excel 2000
spaceCheck = form.indexOf((" "), tdEnd + 1);
// Excel 97
fontCheck = form.indexOf(("<font face=\"돋움\">&nbsp;</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(">&nbsp;<", "><");
result = result.replaceAll("> <", "><");
result = result.replaceAll("<br></", "</");
return result;
}
/**
* @param strOnLoad the strOnLoad to set
*/ public void setStrOnLoad(StringBuilder strOnLoad) {
this.strOnLoad = strOnLoad;
}
}