엑셀 처리 방식

안녕하세요 질문 좀 드립니다
wpf에서 엑셀을 조작하려면(생성,내용기입 등등) 어떤 라이브러리를 사용하는게 좋은가요?
interlop 같은 경우는 컴퓨터에 엑셀이 무조건 깔려있어야 동작하는 것 같아서요

https://blog.naver.com/gurals1235/222583819360 참고하시기 바랍니다.

1개의 좋아요

안녕하세요.

말씀하신대로 interop는 Excel 자체를 조작하는 기술입니다.

Microsoft Excel이라는 게 Excel 문서를 하나 실행하면, PC에 설치된 Excel Application을 전역으로 하나 실행시키고, 이후 여러 문서를 조작하는 형태인데 interop은 이 형태를 동일하게 따라 하는 것으로 알고있습니다. 그래서 Excel이 설치되어 있어야하는 것이고 라이브러리가 버전까지 맞아야하는 것입니다. Excel을 아주 무겁고 디테일하게 다뤄야한다면 이렇게 해야 Microsoft Excel 자체에 내장된 여러 기능을 사용할 수 있습니다.

그런데 보통은 실무에서 Excel을 깊게 다루는 일은 많이 없고, 지정된 Cell의 값을 불러오고, 쓰고 하는 정도입니다. 이건 그냥 Excel Application을 실행할 필요없이 값만 바꾸면 되는 것이죠. 여기서 OpenXml 이라는 개념이 등장합니다.

Microsoft Office 제품군은 최초에는 Excel에는 xls, Word는 doc, PowerPoint는 ppt 였습니다. 그러다가 파일 수정이 어려워서 그랬는지 문서구조를 XML 형태로 모두 바꿨고 그때 등장한 게 xlsx, docx, pptx 입니다.

xlsx, docx, pptx 파일들의 확장자를 zip 파일로 변경하고나서 압축프로그램으로 내부를 보면 xml 문서의 묶음으로 되어있고, 이 xml을 파싱해서 쓰는 라이브러리가 OpenXml 입니다.

따라서 Excel을 조작할 때도 이 OpenXml을 기반으로 만들어진 라이브러리를 사용하시면 되는데,

  • MiniExcel
  • ClosedXml
  • ExcelDataReader

등이 있고 더 많습니다. 가장 유명한 Epplus는 상용기업의 경우엔 제약이 생겼고 제가 잘못알고 있을 수도 있지만 OpenXml 기반이 아닌 것으로 알고 있습니다.

따라서 위에 언급한 패키지들을 중심으로 AI에게 간단한 사용방법을 알려달라고 하시면 도움이 되실 것 입니다.

4개의 좋아요

답변감사합니다
closedxml을 사용할 거 같은데 현업에서 다른 것들에 비해 어떤 장단점이 있을까요?

1개의 좋아요

개인적인 경험에 의하면 유연한 것은 ExcelDataReader이고, 성능이 가장 좋은 것은 MiniExcel이라고 체감하고 있습니다. ClosedXml은 오히려 제일 느리지 않을까 싶습니다. 개인적인 사용 경험이라 정확한 벤치마크는 없는 상태입니다.

그리고 위 OpenXml 기반의 Excel 라이브러리들은 사용방법이 비슷하기 때문에 두드러진 이점은 없지 않을까 싶어서, 마음에 드시는 것 아무거나 사용하셔도 되지 않을까 싶습니다.

2개의 좋아요

추가적으로, 프로그래밍 관련 질문이기 때문에

WPF 관련 질문은 아니고 .NET에 관련된 질문 같아서 자유게시판에서 프로그래밍 언어 게시판으로 변경해드렸습니다.

3개의 좋아요

예전 제가 썼던 방식인데

odbc(oledb) 를 통해서 가능 합니다.

3개의 좋아요

위에 Vincent님 말씀처럼 Epplus는 기업 사용자에게는 유료로 바뀐 것 같습니다. 성능 테스트까지는 안 해봤지만, Epplus가 제일 빠르게 느껴 졌습니다.

많은 기능이 필요하지 않다면, 구 버전 4.5.3.3인가를 쓰면 기업도 무료로 사용 가능 할 겁니다.

1개의 좋아요

저도 엑셀 관련 기능이 필요해서, gpt 가 추천해준, SheetJs 를 쓰고 있습니다.
블레이저 웹어셈블리 환경이라 선택한 것인데, 닷넷 런타임 환경이면 ClosedXml 을 추천하더군요.

사용 코드도 짜주길래 그대로 사용합니다.

3개의 좋아요