c# EXCEL 파일 읽기

C# 2020. 2. 25. 18:29

엑셀파일을 읽어서 데이터를 처리해야할때가 있습니다.

엑셀파일을 읽는 소스는 많고 공유도 많이 되어 있지만 엑셀데이터가 다양하고 예외상황도 많이 발생하여 정리합니다.

NuGet 에서 라이브러리를 설치합니다.

excel 파일을 읽기위해서 설치합니다.

윈도우 폼에서 OpenFileDialog를 추가합니다. 

OpenFileDialog 추가

button을 누르면 파일을 읽어와서 콘솔창에 출력하는것으로 해보겠습니다. 

using Microsoft.Office.Interop.Excel;
using System;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

위와같이 추가해 줍니다. 

        Excel.Workbook wb = null;
        Excel.Worksheet ws = null;
        Excel.Application ap = null;

application = 엑셀라이브러리 몸통입니다.

workbook = 엑셀파일 데이터가 통째로 들어갑니다.

worksheet = 시트 데이터가 통째로 들어갑니다.

버튼을 클릭할때 이렇게 해서 데이터를 콘솔창에 찍어 보았습니다.

            try
            {
                if (OpenFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    Console.WriteLine(OpenFileDialog1.FileName);
                    ap = new Excel.Application();
                    wb = ap.Workbooks.Open(OpenFileDialog1.FileName);
                    ws = wb.Sheets[1];
                    ap.Visible = false;
                    Range range = ws.UsedRange;
                    String data = "";
                    for (int i = 1; i <= range.Rows.Count; ++i)
                    {
                        for (int j = 1; j < range.Columns.Count; ++j)
                        {
                            if (range.Cells[i, j] != null && range.Cells[i, j].Value2 != null)
                            {
                                data += "위치 : " +i+" , "+ j +" > "+ ((range.Cells[i, j] as Range).Value2.ToString() + " ");
                            }
                            else
                            {
                                data += "위치 : " + i + " , " + j + " > "+"없음 ";
                            }
                            
                        }
                        data += "\n";
                    }
                    Console.WriteLine(data);

                    /*메모리 할당 해제*/
                    DeleteObject(range);
                    DeleteObject(ws);
                    DeleteObject(wb);
                    ap.Quit();
                    DeleteObject(ap);
                    /*메모리 할당 해제*/
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("에러: " + ex.Message);
            }

        }

Console.WriteLine(OpenFileDialog1.FileName); //읽어온 파일경로와이름을 출력합니다. 

ap = new Excel.Application(); 엑셀파일을제어할 애플리케이션을 생성합니다.

wb = ap.Workbooks.Open(OpenFileDialog1.FileName); 파일을 읽어서 wb에 넣어줍니다. 

 ws = wb.Sheets[1]; //첫번째 시트 를 ws로 넣어줍니다. 이름으로도 읽어올수 있지만 경우에 따라서 하시면 될것 같습니다.

                            if (range.Cells[i, j] != null && range.Cells[i, j].Value2 != null)
                            {
                                data += "위치 : " +i+" , "+ j +" > "+ ((range.Cells[i, j] as Range).Value2.ToString() + " ");
                            }
                            else
                            {
                                data += "위치 : " + i + " , " + j + " > "+"없음 ";
                            }

데이터를 출력합니다. 

 Console.WriteLine(data);

이상 엑셀파일 읽기를 정리합니다. 

참고 출처 : https://coderwall.com/p/app3ya/read-excel-file-in-c

 

Read Excel File in C# (Example)

A protip by teddy about excel, c#, and interop.

coderwall.com

참고 출처 : https://kwanghyuk.tistory.com/167

 

C# 에서 Excel 파일을 읽는 방법

1. Microsoft.Office.Interop.Excel 참조 준비 (Nuget 패키지 다운) 이제 C#에서 Excel을 불러오고, 쓰는 것이 가능하다. 2. File Path 입력 추가 Excel 파일을 읽기 전에 App에서 Excel파일의 경로를 알아야 불..

kwanghyuk.tistory.com

전체 소스코드

sunme.zip
1.06MB

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,