http://bronto.egloos.com/2101311


ASP Excel Component

1. 정의
  - 웹 어플리케이션에서 Microsoft Office파일들(Excel, Access 등)을 쉽게 제어하도록 지원하는 컴포넌트

2. 차이점
 - ASP에서는 ADO를 이용해서도 동일한 기능을 지원할 수 있다.
 - ADO보다 안정적으로 Excel데이터를 읽어 들인다. 
 - 오류에 대한 처리가 안정적이다.

3. 특징
 - Server Side컴포넌트로 웹 브라우저의 특성이나 환경에 제약을 주지 않는다.
 - 클라이언트 브라우져에서 설치를 할 필요가 없다.
 - .xls, .xlsx 등의 파일을 쉽게 제어할 수 있다.
 - MS Office파일을 일반 데이터베이스와 같이 다룰 수 있다.
    ex) Table->Sheet, Field -> Column

4. 부가기능
  - Excel파일을 생성해서 자료를 입력할 수 있는 기능

5. 요구사항
  - Microsoft Excel Driver가 설치되어 있어야 한다.
  - Windows 2000이상
  - IIS / ASP 에서 동작

사용 예1) 웹에서 파일 업로드를 통하여 Excel파일을 업로드 한다.(일반 파일 업로드를 하면 됨)


사용 예2) 엑셀파일의 입력형태는 특정 위치에 대한 제약은 갖지 않고 자료의 입력이 시작된 위치를 기준으로 첫번째 컬럼이 데이터베이스에서의 Field로 정해진다.
그 이후의 자료는 레코드로 인식이 된다.

사용 예3) 아래는 인식된 테이블과 필드를 나타낸 모습

6. ASP 코드 예

'===== Excel Read Component 생성하기 =====
Set objExcelRead = Server.CreateObject("XXXXXXX.ExcelRead")

'========== Excel 파일이 있는 모든 테이블 정보를 읽는다 (sheet, 이름정의등) ==========
objExcelRead.OpenExcelFile FileName   ' Excel 파일 열기
errorMessage = objExcelRead.GetErrorMessage()  ' Excel 작업중 발생하는 에러 메세지

If Len(errorMessage) = 0 Then ' 에러가 없으면 Excel의 모든 테이블 정보 보여주기
    excelCount = objExcelRead.GetTableCount  ' Excel 파일의 테이블 수

    '=== 시트 루프
    For exceli = 0 To excelCount - 1 ' 테이블 수 만큼 루프를 돌며 테이블 이름을 수신함
        excelTableName = objExcelRead.GetTableName(exceli) ' 테이블 이름을 수신
        excelFieldCount = objExcelRead.GetFieldCount(excelTableName)  ' Excel 파일의 테이블 수
        excelRowCount = objExcelRead.GetExcelData (excelTableName,"*")

        '=== 시트 이름 출력 ( excelTableName )
        '=== 해당 시트의 데이터(row) 건수 출력 ( excelRowCount )
        '=== 해당 시트의 컬럼 건수 출력 ( excelFieldCount )

        '=== 필드 수 만큼 루프를 돌며 필드명을 수신함
        For excelj = 0 To excelFieldCount - 1
            message2 = objExcelRead.GetExcelData (excelTableName,"*")
            excelFieldName = objExcelRead.GetFieldName(excelTableName, excelj) ' 필드명을 수신
 
            '=== 컬럼 이름 출력 ( excelFieldName )
        Next
        
        ' === 엑셀데이터 가져오기
        For excelk = 0 To excelRowCount - 1
            ' === 한개의 Row에서 셀 단위로 가져옴(순서는 필드 순서와 동일)
            For excelj = 0 To excelFieldCount - 1
                celldata = objExcelRead.GetExcelDataCell(excelj)
            Next
            ' === 다음 Row로 커서를 이동한다.
            objExcelRead.GetExcelDataMoveNext()
        Next
    Next
End if

objExcelRead.CloseExcelFile  ' Excel 파일 닫기
Set objExcelRead = Nothing  ' Excel 파일 객체 해제

'asp' 카테고리의 다른 글

Visual Basic 또는 VBA에서 Excel 데이터에 ADO를 사용하는 방법  (0) 2010.06.28
엑셀 데이터를 DB 저장  (0) 2010.06.28
Asp로 엑셀파일읽기  (0) 2010.06.28
싱글쿼테이션 처리  (0) 2010.05.20
ASP 보안  (0) 2010.05.20

+ Recent posts