VB.NET으로 대용량 엑셀파일 읽기 (1/3)

2023. 9. 2. 16:49VB.NET/왕초보

VB.NET으로 엑셀파일을 읽는 작업은 생각보다 빈번하게 사용되는 기능중 하나이다. 내용이 아주 단순하지는 않지만, 그렇다고 그리 복잡하지도 않으니 차근차근 알아보도록 하자.

 

아래 내용은 대용량 엑셀을 읽을때도 유용하다. 대용량 엑셀 파일을 읽을때는 엑셀의 모든 내용을 한번에 메모리로 가져온 후 필요할때마다 해당 부분을 메모리에서 가져오는 방식을 주로 사용하게 된다.

 

그렇다고 대용량일때와 그렇지 않을때를 구분해서 사용할 필요는 없이, 그냥 아래 강좌대로 사용하면 대용량이든 아니든 엑셀파일을 무리없이 읽어올 수가 있다.

 

1. 엑셀로 간단한 예제파일 만들기

예제 파일은 강좌의 이해를 돕기 위해 최대한 단순한 형태로 만들어보자. 아래 그림처럼 정말 단순한 엑셀 파일을 하나 만들어서 exam.xlsx로 저장하자.

VB.NET으로 엑셀파일을 읽기 위해서는 PC에 반드시 엑셀이 설치되어 있어야 한다. 물론, 엑셀이 설치되지 않아도 해당 라이브러리를 사용해서 구현할 수는 있지만 초보 강좌에서 거기까지는 나가지는 말자.

2. 참조 추가

아래 그림처럼 프로젝트 참조에서 "Microsoft Excel 15.0 Object Library"를 추가하자.

엑셀 라이브러리 참조 추가

설치되어 있는 엑셀의 버전에 따라 버전은 조금 다를 수 있지만, 딱히 버전에 영향을 받지는 않으니 현재 PC에 설치되어 있는 엑셀 라이브러리를 참조에 추가하면 된다.

3. 클래스 생성

프로젝트에서 엑셀을 사용하는 방법을 간략히 설명하면 파일을 열고, 원하는 위치의 데이터를 사용한 후 파일을 닫으면 된다. 이 작업을 위해 이번 예제에서는 간단한 클래스를 만들어 보도록 하겠다.

 

클래스 소스의 상세 내용은 첨부한 파일을 참고하면 되고, 여기서는 핵심 부분만 선별해서 하나씩 설명하도록 하겠다.

(1) 라이브러리 Import

참조된 엑셀 라이브러리를 사용하기 위해 클래스 맨 윗줄에 Import 해준다.

Imports Microsoft.Office.Interop

(2) 엑셀 관련 변수 선언

Private Application As Excel.Application
Private WorkBook As Excel.Workbook
Private WorkSheet As Excel.Worksheet

엑셀은 위 소스와 같이 Application, WorkBook, WorkSheet의 3부분으로 구분되어 있다. Application은 엑셀 자체, WorkBook은 Application안에 있는 현재 파일, WorkSheet는 각각의 탭 페이지이다. 엑셀을 조금만 사용할줄 알면 이 용어들에 대해 받아들일 수 있을 것이다.

(3) 엑셀 파일 열기

Private Function OpenFile(pFileName As String) As Boolean

    Application = New Excel.Application With {.Visible = False}

    Try
        WorkBook = Application.Workbooks.Open(pFileName)
        WorkSheet = WorkBook.Sheets.Item(1)
        Return True
    Catch ex As Exception
        Return False
    End Try

End Function

엑셀 파일을 열기 위해서는 위 (2)항에서 정의한 Application, WorkBook, WorkSheet을 모두 사용해야 한다.

Line 1 : Application = New Excel.Application With {.Visible = False}

여기서는 Application 객체에 엑셀 Application을 할당해주며, Visible 속성을 False로 설정해서 엑셀창이 뜨지 않도록 설정한다.

Line 2 : WorkBook = Application.Workbooks.Open(pFileName)

파라미터로 넘어온 엑셀파일을 WorkBook에 할당한다. 해당 파일이 없거나, 인식할 수 없는 형식의 파일이면 Catch문으로 분기한다.

Line 3 : WorkSheet = WorkBook.Sheets.Item(1)

엑셀 파일의 첫번째 워크시트를 WorkSheet 변수에 할당한다. 이를 응용하면 원하는 워크시트를 열 수 있고, 모든 워크시트를 루프 돌며 열 수도 있게 된다.

 

이 정도면 엑셀파일을 여는 방법까지 설명이 됐다. 다음번 강좌에서 이렇게 오픈한 엑셀을 이용해서 원하는 데이터를 가져오고, 최종적으로 엑셀을 닫는 부분까지 알아보자.

 

첨부파일은 다음번 강좌에 포함시키도록 하겠다.

반응형