C#으로 엑셀 파일 만들기 혹은 데이터 넣기 ClosedXML 시간 절약

* 출처 - http://closedxml.codeplex.com/

C#으로 엑셀을 다루는 여러 가지 방법들이 있겠지만, 마이크로소프트의 OpenXML 2.0을 이용한 ClosedXML이 심플하고 괜찮아 보입니다.
  • 마이크로소프트 OpenXML SDK 2.0 (.NET 3.5용)을 설치합니다.
  • 비주얼스튜디오에서 .NET 참조를 추가합니다. - DocumentFormat.OpenXML, WindowsBase
  • ClosedXML의 압축을 푼 곳을 지정하고 참조를 추가합니다. - ClosedXML.dll

소스코드에서는 using ClosedXML.Excel; 만 넣어주면 됩니다. 


자세한 사항은 위 출처의 Document를 보면 되겠고, 얼마나 쉬운지(?) 간단한 코드 몇 줄을 첨부합니다. ASP.NET으로 서비스할 때 만들어진 엑셀파일을 다운로드할 수 있는 설명도 찾을 수 있습니다.


var workbook = new XLWorkbook("양식있는빈엑셀.xlsx");  // 기존 엑셀 열기

var workbook = new XLWorkbook(); // 새 엑셀 열기


var worksheet = workbook.Worksheet(1);  // 첫번째 sheet열기

var worksheet = workbook.Worksheets.Add("Sheet1");  // 빈 sheet추가하기


worksheet.Cell("B3").Value = "데이터넣기";  // B3에 값 넣기

worksheet.Cell(3,2).Value = "데이터넣기";   // 3행, 2열 즉 B3에 값 넣기


Int32 intRow = 7;

worksheet.Range("B" + intRow.ToString() + ":" + "AB" + intRow.ToString()).Style.Border.InsideBorder = XLBorderStyleValues.None; // 7행 B7:AB7 범위 내부의 선 없애기


workbook.SaveAs("HelloExcel.xlsx");  // 새로운 이름으로 저장하기


위 프로그램은 로컬 컴퓨터에서 동작될텐데, 만약 서버에서 aspx로 돌리고 브라우저 단에서 엑셀 파일을 다운로드 받기 위해서는 다음 글을  참고할 수 있습니다. - http://closedxml.codeplex.com/wikipage?title=How%20do%20I%20deliver%20an%20Excel%20file%20in%20ASP.NET%3f&referringTitle=Documentation

  • 새 프로젝트 -> ASP.NET 웹 응용프로그램을 만든 후, 위와 같이 참조 추가하고 using을 써준 후,
  • using System.IO; 를 더 추가하면 되겠습니다. 
  • 위 링크에 있는 코드를 Page_Load에 복사해 넣고 빌드하고 웹 브라우저에 띄우면 엑셀 다운로드가 완료됩니다.
[2015/06/23 추가]

- 개편된 국세청 사이트에서는 XLSX는 지원하지 않고 XLS만 업로드 지원한다는 이야기가 있습니다. XLS로 저장해야 한다면 다른 선택을 해야 하는데,,, 이것 무료 버전은 150행의 제한이 있지만 http://www.gemboxsoftware.com/ 를 써도 비슷한 효과를 거둘 수 있으며 XLS로 저장을 할 수 있습니다. 
- http://www.gemboxsoftware.com/support-center/kb/articles/31-working-with-spreadsheet-file-stream 엑셀 내용을 스트림으로 내려주는 기능입니다. 



덧글

  • costzero 2013/04/08 20:41 # 답글

    오 전 기껏해야 csv로 html을 다운받는게 고작이었는데 역시 전문가는 다르십니다.
  • 무재칠시 2013/04/09 09:34 #

    천만의 말씀을요^^ 저도 검색해서 사용해본 부분입니다.~ 요즘엔 오픈소스들로 인해 개발자들을 많이 편하게 해주는 개발자!들이 많아서 좋은 것 같습니다.
  • costzero 2013/04/09 09:35 #

    엑셀파일을 제어하는 프로그램이야 말로 부가옹이 되는 가장 빠른 방법이라고 사료.ㅎㅎㅎ
  • 무재칠시 2013/04/11 12:04 # 답글

    그렇군요^^
  • rupan3th 2017/02/05 11:57 # 삭제 답글

    좋은글 감사합니다.
  • 무재칠시 2017/02/07 21:16 #

    덧글 고맙습니다.~~~
댓글 입력 영역