728x90
반응형
안녕하세요
지난번엔 C# 프로그램에서 Datagridview의 Excel Export(엑셀 내보내기) 포스팅에 이어
이번에는 Excel Import(엑셀 불러오기) 기능에 대하여 정리해 보았습니다.
**Excel Export(엑셀 내보내기) 지난글
2022.04.18 - [소소한 C# 지식] - [c#/WINFORM] - Datagridview Excel Export (엑셀 내보내기)
1. Excel Import 메서드 생성
- 파일 이름과, Datagridview 이름을 변수로 받아 옵니다.
- OleDb를 이용하여 엑셀 데이터를 가져옵니다.
- OleDb를 이용하면 컴퓨터에 엑셀이 설치되어 있지 않아도 엑셀 데이터를 가져올 수 있고 속도 또한 굉장히 빠릅니다.
public void ExcelImport(string fileName, DataGridView dgv)
{
// 엑셀 문서 내용 추출
string connectionString = string.Empty;
string sheetName = string.Empty;
// 파일 확장자 검사
if (File.Exists(fileName))
{
if (Path.GetExtension(fileName).ToLower() == ".xls")
{ // Microsoft.Jet.OLEDB.4.0 은 32 bit 에서만 동작되므로 빌드 할때 반드시 32bit로 할것(64bit로 하면 에러남)
connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0};Extended Properties=Excel 8.0;", fileName);
}
else if (Path.GetExtension(fileName).ToLower() == ".xlsx")
{
connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0};Extended Properties=Excel 12.0;", fileName);
}
}
using (OleDbConnection con = new OleDbConnection(connectionString))
{
using (OleDbCommand cmd = new OleDbCommand())
{
cmd.Connection = con;
con.Open();
DataTable dtExcelSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
con.Close();
}
}
DataSet data = new DataSet();
DataTable dt = new DataTable();
//엑셀 시트 이름 설정
string strQuery = "SELECT * FROM [" + sheetName + "]";
OleDbConnection oleConn = new OleDbConnection(connectionString);
oleConn.Open();
OleDbCommand oleCmd = new OleDbCommand(strQuery, oleConn);
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(oleCmd);
DataTable dataTable = new DataTable();
dataAdapter.Fill(dataTable);
data.Tables.Add(dataTable);
//datagridview에 datatable(엑셀 데이터) 담기
dgv.DataSource = dataTable;
dataTable.Dispose();
dataAdapter.Dispose();
oleCmd.Dispose();
oleConn.Close();
oleConn.Dispose();
}
2. Excel Import 버튼 클릭 이벤트 추가
- Excel Import 메서드 호출
private void button1_Click(object sender, EventArgs e)
{
try
{
//파일 선택 창 오픈
using (OpenFileDialog dlg = new OpenFileDialog())
{
//파일 형식 필터
dlg.Filter = "Excel Files(2007이상)|*.xlsx|Excel Files(97~2003)|*.xls";
if (dlg.ShowDialog() == DialogResult.OK)
{
//파일 위치 선택 후 Ok 클릭 했을 경우 Import 메서드를 호출
ExcelImport(dlg.FileName, dgvtest);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
throw;
}
}
4. Excel Import 결과
- Excel Import 버튼 클릭
- import 하고자 하는 파일 선택
- Datagridview에 Excel Import 완료
728x90
반응형
'소소한 C# 지식' 카테고리의 다른 글
[C#]C#으로 Window Service(윈도우 서비스) 만들기 (10) | 2022.04.21 |
---|---|
[C#]NTP 서버 - PC 시스템 시간 동기화 프로그램 (4) | 2022.04.20 |
[c#/WINFORM] - Datagridview Excel Export (엑셀 내보내기) (0) | 2022.04.18 |
[C#]데이터 포맷(Data Format) 형식 변경 - 숫자, 일자, 시간 (0) | 2022.04.14 |
[C#/WINFORM] C#에서 Word 문서 만들기 및 수정하기 (2) | 2022.04.13 |
댓글