엑셀파일을 읽어서 데이터를 처리해야할때가 있습니다.
엑셀파일을 읽는 소스는 많고 공유도 많이 되어 있지만 엑셀데이터가 다양하고 예외상황도 많이 발생하여 정리합니다.
NuGet 에서 라이브러리를 설치합니다.
윈도우 폼에서 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
참고 출처 : https://kwanghyuk.tistory.com/167
전체 소스코드
'C#' 카테고리의 다른 글
c# hello word c# 시작 MessageBox.Show (1) | 2020.03.09 |
---|---|
C# String 문자열 자르기 Substring 사용법 (0) | 2020.03.05 |
C# 인스타그램 이미지 피드 가져오기 (0) | 2020.01.23 |
"al.exe"을(를) 찾을 수 없습니다. SdkToolsPath가 설정되었는지, 도구가 SdkToolsPath 아래의 올바른 프로세서 특정 위치에 있는지, Microsoft Windows SDK가 설치되었는지 확인하세요. (0) | 2019.04.22 |
캔디 타워 맵툴 maptool 간단하게. (0) | 2014.10.11 |