728x90
몇일 고생끝에 겨우 방법을 찾아서 만들어낸 엑셀 리포팅 기능!
전에 간단히 소개만 했지만, 이번엔 직접 만들어서 쓰는 함수를 공개~!ㅋㅋ
하지만, 내가 필요한 기능만 만들어나서 기능이 별로 없다는거~ㅋㅋ
필요한건 알아서 MSDN뒤져서 만드세요~!ㅋㅋ
/*
* 엑셀 오브젝트 생성
*/
function GetExcelObject(){
return new ActiveXObject("Excel.Application");
}
/*
* 엑셀 워크북 생성
* xlApp : ExcelObject
*/
function GetExcelBook(xlApp){
return xlApp.Workbooks.Add;
}
/*
* 엑셀 워크북 복사
* xlApp : ExcelObject
* SheetName : 복사 할 쉬트명
* strLocation : 파일 위치
* boolReadOnly : 읽기 전용 여부
*/
function GetExcelBookCopy(xlApp,SheetName,strLocation,boolReadOnly){
var Org_xlBook;
var Org_xlSheet;
var Cpy_xlBook;
Cpy_xlBook=xlApp.Workbooks.Add;
//엑셀 쉬트 복사
Org_xlBook = xlApp.Workbooks.Open(strLocation, false, boolReadOnly);
Org_xlSheet = Org_xlBook.Worksheets(SheetName);
Org_xlSheet.Copy(Cpy_xlBook.Worksheets(1));
Org_xlBook.Close;
return Cpy_xlBook;
}
/*
* 행 추가
* xlSheet : 쉬트
* sRow : 추가할 행 번호
*/
function InsertRow(xlSheet,sRow){
var xlShiftDown=-4121;
xlSheet.Range(sRow + ":" + sRow).Insert(xlShiftDown);
return xlSheet;
}
/*
* 행 삭제
* xlSheet : 쉬트
* sRow : 추가할 행 번호
*/
function DeleteRow(xlSheet, sRow){
var xlShiftUp=-4162;
xlSheet.Range(sRow + ":" + sRow).Delete(xlShiftUp);
return xlSheet;
}
/*
* 엑셀 보여주기
*/
function ExcelShow(xlApp){
xlApp.Visible = true;
}
Javacript에 참조형 데이터전송방식이 있는지 모르겟다.. 그래서 걍 다 오브젝트 넘겨서 오브젝트로 받았다 ㅠㅠ
여기서 간단한 사용 예제~
var xlApp;
var xlSheet;
var xlBook;
var yourAddress = "http://MyAddress/Template.xls";
var SheetName="Sheet1";
try{
xlApp = GetExcelObject();
xlBook = GetExcelBookCopy(xlApp,SheetName,yourAddress, false);
xlSheet = xlBook.Worksheets(1);
var xlSheet;
var xlBook;
var yourAddress = "http://MyAddress/Template.xls";
var SheetName="Sheet1";
try{
xlApp = GetExcelObject();
xlBook = GetExcelBookCopy(xlApp,SheetName,yourAddress, false);
xlSheet = xlBook.Worksheets(1);
//each는 jQuery모르면 공부! 합시다~
var sRow=13;//시작 위치 지정
var sRow=13;//시작 위치 지정
$.each(DetData,function(){
xlSheet.Range("A" + sRow) = this['ITEM_NO'];//아이템 번호
xlSheet.Range("B" + sRow) = this['BOMNM'];//품명
xlSheet.Range("C" + sRow) = this['STD'];//규격
xlSheet.Range("D" + sRow) = this['UNIT'];//단위
xlSheet.Range("E" + sRow) = this['CNT'];//수량
xlSheet.Range("F" + sRow) = this['COST'];//단가
xlSheet.Range("G" + sRow) = this['AMOUNT'];//금액
xlSheet.Range("H" + sRow) = this['RMK'];//비고
sRow++;
xlSheet = InsertRow(xlSheet,sRow);//열 추가
xlSheet.Range("B" + sRow) = this['BOMNM'];//품명
xlSheet.Range("C" + sRow) = this['STD'];//규격
xlSheet.Range("D" + sRow) = this['UNIT'];//단위
xlSheet.Range("E" + sRow) = this['CNT'];//수량
xlSheet.Range("F" + sRow) = this['COST'];//단가
xlSheet.Range("G" + sRow) = this['AMOUNT'];//금액
xlSheet.Range("H" + sRow) = this['RMK'];//비고
sRow++;
xlSheet = InsertRow(xlSheet,sRow);//열 추가
});
ExcelShow(xlApp );
}catch(e){
alert("보안설정을 변경 해 주세요.\n"+
"도구 > 인터넷 옵션 > 보안 > 사용자 지정수준 > "+
"스크립팅하기 안전하지 않는 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립팅 > 확인으로 변경");
"스크립팅하기 안전하지 않는 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립팅 > 확인으로 변경");
}
※ 퍼가는건 자유인데 출처좀 밝혀주세요~
진짜 고생해서 만든거라서 ㅠㅠㅠㅠㅠㅠㅠ
728x90
댓글