[Office] Application에서 Excel 파일 읽기

2011. 1. 20. 16:09Others/C# 일반

Application을 작성하다 보면 워드프로세서나 스프레드시트 프로그램과의 연동은 필수적으로 거의 요구되어집니다.

Office 문서의 작성의 경우에는 컨텐츠를 XML 또는 CSV, HTML 형태로 작성한 다음 확장자를 .xls, .doc로 지정하면 될 정도로 매우 간단합니다..

하지만 Office 문서의 읽기는 결코 만만한 작업이 아닙니다. 따라서 이미 만들어진 Assembly를 이용하게 되는데 이 포스트에서는 Office Excel 문서를 읽기 위해 사용할 수 있는 각 선택지와 각각의 장단점에 대해서 안내 드리고자 합니다.(개발방법, 개발 코드는 여기서 다루지 않습니다.)

Office Excel 파일을 C#에서 읽는 방법은 다음과 같은 몇 가지 방법이 있으며 각각 장단점이 존재합니다.

  1. Office Interop Excel 연동

    이 방법은 컴퓨터에 설치된 Office Application을 이용하는 방법입니다. PC에  Office를 설치하면 기본적으로 VisualStudio에서 해당 Assembly를 참조하고 연동할 수 있게 됩니다.

    image
    • 장점

      이 방법은 Office에서 읽을 수 있는 문서는 모두 읽을 수 있습니다. 또한 가장 오류 없이 문서를 읽어 들일 확률이 높습니다.

    • 단점

      이 방법은 설치된 Office Application을 이용하는 방법으로써 비교적 속도가 떨어지고 서버 자원을 많이 사용합니다. 개발 시 보안 그리고 자원해제, 환경설정 등 비교적 사용방법이 더 까다롭습니다. 이 방법은 Office가 설치되지 않은 환경에서는 사용할 수 없으며, MS에서도 권장하지 않는 방법이기도 합니다.

      image
      ※ 사용자가 많거나 Excel 자원해제에 있어 단 하나의 실수라도 있다면 이러한 서버의 상태를 볼 수 있습니다.
  2. 별도로 구현된 Office Library 사용
    image

    • 장점

      이 방법은 Office Application없이도 사용되는 방법이며, 대부분의 경우 속도가 빠릅니다. 또한 Assembly를 첨부하는 것만으로도 사용할 수 있으므로 비교적 구현비용이 더 적습니다.

    • 단점

      이 방법은 해당 Library에서 지원하는 특정 형태의 문서구조만 읽을 수 있습니다. 예를 들어 확장자가 .xls이더라도 실제 문서 구조는 통합문서(Binary) 또는 Excel XML, HTML, CSV... 등등등 매우 다양합니다. 보통 이런 Library는 Excel 통합문서 또는 Excel XML만을 지원하는 것이 대부분입니다. 또한 문서에 작은 오류라도 포함된 경우 아무런 Exception 없이 데이터의 일부분만 읽게 되는 경우도 발생하곤 하니 참고하시기 바랍니다.