본문 바로가기
개발의 기록/Web

Javascript Excel출력 함수 정리!

by prographer J 2009. 3. 31.
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);

//each는 jQuery모르면 공부! 합시다~
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);//열 추가
});

ExcelShow(xlApp );
}catch(e){
            alert("보안설정을 변경 해 주세요.\n"+
"도구 > 인터넷 옵션 > 보안 > 사용자 지정수준 > "+
"스크립팅하기 안전하지 않는 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립팅 > 확인으로 변경");
}


※ 퍼가는건 자유인데 출처좀 밝혀주세요~
진짜 고생해서 만든거라서 ㅠㅠㅠㅠㅠㅠㅠ

728x90

댓글