본문 바로가기
프로그래밍

[C#] 파일정보 로딩하여 Excel로 저장하기

by minimax95 2020. 6. 17.

이번 포스팅에서는 프로그램에서 파일 정보를 로딩하여 리스트뷰 컨트롤에 보여주고, 이를 Excel 파일로 저장하는 프로그램을 만들어보겠습니다.

 

프로그램 UI는 심플하게 리스트뷰 컨트롤 1개와 버튼 2개로 구성해 보았습니다.

[파일 열기] 버튼을 클릭하면 파일 Open 대화 상자가 열리고 파일을 선택하면 우리가 만든 리스트뷰 컨트롤에 파일 이름과 파일 정보들이 리스트로 저장됩니다. 다시 [파일 저장] 버튼을 클릭하면 리스트 뷰에 저장되어 있는 파일 정보들이 Excel 파일로 저장하는 기능들을 구현해 보겠습니다.

 

먼저 UI를 구성하는 컨트롤 중에서 리스트뷰 컨트롤은 몇 가지 속성을 변경해 주고 헤더를 추가해 주어야 합니다.

리스트뷰 컨트롤 속성 중에서 FullRowSelect 항목과 GridLines 항목 속성을 True로 변경해 주고, View 속성은 Details를 설정해 줍니다. 

헤더의 정의는 속성 창에서 Columns 항목의 컬렉션 [···] 버튼을 클릭합니다.

[···]버튼 클릭 시 아래와 같이 컬렉션 편집기가 나오고 여기서 [추가] 버튼을 클릭하여 세부 속성들을 정의해 줍니다.

 

아래와 같이 "이름", "유형", "크기", "경로", "수정한 날짜" 항목의 칼럼 헤더를 정의해 주었습니다.

 

 

다음으로 파일 오픈 대화상자와 파일 저장 대화 상자 컨트롤 openFileDialog1, saveFileDialog1을 각각 추가해 줍니다.

openFileDialog1 컨트롤은 Filter 속성에 "모든 파일(*.*) | *.*" 를 추가해 주고 MultiSelect 속성을 True로 변경해 줍니다.

 

다음은 소스코드를 구현할 차례입니다.

필요한 멤버들을 아래와 같이 선언해 주겠습니다. 

FileInfo _fileInfo = null;        // 파일 정보
string _strFilePath = "";        // 파일 경로

 

그리고 [파일열기] 버튼과 [파일 저장] 버튼을 더블클릭하여 버튼 처리기를 생성해 주겠습니다.

파일 열기 버튼처리기에서는 아래와 같이 openFileDialog1에서 파일 정보를 읽어와서 리스트뷰 컨트롤에 Add 하는 기능을 구현해 줍니다.

여기서 GetFileSize( )함수가 나오는데 이는 파일 사이즈를 표준화하여 사이즈 정보를 텍스트로 반환해주는 기능을 담당하는 함수입니다. 인자로 파일의 double형의 byteLength를 받아서 표준화 한 다음, string으로 반환해 줍니다.

 

다음은 파일 저장하기 기능을 수행하는 파일 저장 버튼 처리기를 구현해 보겠습니다.

Excel 파일로 저장하기 위해서는 Excel 라이브러리 참조 추가를 해주어야 합니다.(물론 Microsoft Office 프로그램이 설치되어 있어야 합니다.)

솔루션 탐색기에서 [참조] 항목을 우클릭하여 참조 추가> COM 항목을 선택한 후 아래와 같이 [Microsoft Excel 15.0 Object Library]를 체크하고 확인 버튼을 클릭해 줍니다.(프로그램 설치에 따라 버전이 달라질 수 있습니다.)

참조가 완료되면 이제 using 키워드를 이용하여 아래와 같이 필요한 네임스페이스를 추가해 줍니다.

"Excel"은 라이브러리 참조시 별칭으로 사용됩니다.

 

버튼 처리기도 아래와 같이 구현해 줍니다.

여기서 가장 핵심이 되는 ExcelFileSave( ) 함수는 아래와 같이 구현해 줍니다.

엑셀 클래스 개체를 생성해 주기 위해 Excel.Application을 생성해 주고 이 개체를 통해 workbook과 worksheet를 생성하여 리스트뷰 컨트롤에 저장된 각 셀의 내용을 실제 Excel Sheet에 저장해 줍니다.

 

이제 모든 소스코드 구현이 끝났습니다. 

프로그램을 빌드하고 실행해 보겠습니다.

[파일열기] 버튼을 클릭하고 파일을 선택하면 리스트뷰 컨트롤에 파일 정보가 저장됩니다.

 

[파일 저장] 버튼을 클릭하면 리스트뷰에 저장된 내용들을 엑셀 파일로 저장할 수 있습니다.

파일 저장하기 대화 상자가 나오면 파일 이름을 추가하고 저장버튼을 클릭해 줍니다.

저장된 파일을 열어보면 리스트뷰에 저장되었던 파일 정보들이 엑셀 파일에 저장되어 있는 것을 확인하실 수 있습니다.

지금까지 파일 정보를 로딩하여 엑셀 파일로 저장하는 간단한 프로그램을 만들어 보았습니다.

 

감사합니다.

댓글