메뉴 건너뛰기

tnt_lang

html/script excel로 자료 출력

운영자 2003.10.06 18:52 조회 수 : 2328 추천:27

Excel 버튼이 있는데 화면에 보여주는 데이타를 가지고 있는 특정 노드에 접근하여 언제든 엑셀로 출력한다.

VB Script를 이용하는 부분을 나는 Java Script로 변환하여 보았다.
몇 가지를 고쳐야만 제대로 작동이 되는데
아마도 웹브라우저의 보안수준 관련 설정에서 ActiveX 컨트롤에 대한 사용을 허가해야 할지도 모른다.

그 소스는 다음과 같다.

<SCRIPT LANGUAGE="JavaScript">
<!--
/**
  * 핵심 코딩: 정준호 (VB Script)
  * 전     환: 박찬우 (Java Script)
  */
function printNuchaFamily() {
        var nuchaFamily = new Array(
                new Array("박찬우", "36", "02-1111-1111", "02-2222-2222", "011-5555-5555"),
                new Array("박찬용", "31", "062-8888-8888", "062-9999-9999", "011-7777-7777")
        );

        var recordLen = nuchaFamily.length;
        var colLen = nuchaFamily[0].length;

        var objExcel; //Excel
        var objWorkbook; //Excel Workbook
        var objWorksheet; //Excel Workbook 의 Worksheet
        
        objExcel = new ActiveXObject("excel.Application"); //excel 생성
        objWorkbook = objExcel.Workbooks.Add;        //' Excel 에 Workbook 추가
        objExcel.DisplayAlerts = false; //Worksheet 삭제에 대한 경고 감추기
        
        //WorkSheet 1개만 남겨두고 모두 제거 (기본적으로 3개 생김)
        while (objWorkbook.Worksheets.Count > 1) {
                objWorksheet = objWorkbook.Worksheets.Item(objWorkbook.Worksheets.Count);
                objWorksheet.Delete;
        }
        
        objWorksheet = objWorkbook.ActiveSheet;                        //sheet 의 활성화
        objWorksheet.Name = "NUCHA_SHEET_1";                        //sheet 의 이름 설정
        objWorksheet.cells(2,3) = "제목: 누차 가족 정보";        //2행 3열에 제목 표시
        
                                        
        //타이틀
        titleRow1 = 5
        objWorksheet.cells(5, 1) = "이름";
        objWorksheet.Range("A5:A6").merge(); //A열 5행과 6행의 셀 병합
        
        objWorksheet.cells(5, 2) = "나이";
        objWorksheet.Range("B5:B6").merge();
        
        objWorksheet.Range("C5:E5").merge(); //5행의 C열부터 E열까지 셀 병합
        objWorksheet.cells(5, 3) = "전화";   objWorksheet.cells(5, 3).columnWidth = 20;
        objWorksheet.cells(6, 3) = "집"
        objWorksheet.cells(6, 4) = "직장";
        objWorksheet.cells(6, 5) = "핸드폰";
        
        //만약 특정 셀에 대한 설정이 필요하다면 컬럼에 대하여 펼친 꼴을 사용하기 바람.
        var row = 7;
        var col = 1;
        for (var i = 0; i < recordLen; i++) {
                var eachRecord = nuchaFamily[i];

                for (var j=0; j <= colLen; j++) {
                        objWorksheet.cells(row + i, col + j) = eachRecord[j];
                }
        }

        objExcel.Visible = true
                                
}
//-->
</SCRIPT>
위로