본문 바로가기
[ Program ]/C#

C#.NET 에서 엑셀 파일 읽어들여 dataGrid에 출력

by 관이119 2012. 9. 18.
출처 jaechun's story | 난나다
원문 http://blog.naver.com/hjc426/130023759635

 

//엑셀을 쓰기 위한 아래의 참조 추가가 필요하다.

//Excel 참조 추가는 기본 프로젝트에 포함되어 있지 않으므로 추가를 시켜줘야 한다
using Excel;
using System.Data.OleDb;

//이제 엑셀을 처리하는 부분이다

OleDbConnection ExcelConn=null;

//엑셀파일이나 텍스트 파일등을 위한 Ole 연결을 만들어준다

string xlsfilename;

//불러올 엑셀파일을 위한 변수

try

{

FileDialog fileDlg = new OpenFileDialog();
fileDlg.InitialDirectory = "C:\\"; //기본 디렉토리

fileDlg.Filter = "모든 파일 (*.*)|*.*";

fileDlg.RestoreDirectory = true ;

if(fileDlg.ShowDialog() == DialogResult.OK)
{ //if문을 않 닫아줄것이다 이유는 파일 선택과 동시에 모든 작업이 완료되게 만들기 위해서....

xlsfilename = fileDlg.FileName;
//파일을 선택한 후에 그 이름을 넘겨주는 부분

string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + xlsfilename + ";Extended Properties='Excel 8.0;HDR=YES'" ;

//이 부분이 엑셀 파일 연동을 위한 connection
ExcelConn=new OleDbConnection(strCon);

ExcelConn.Open();

string SQL = @"SELECT * FROM[Sheet1$]";

//Ole 역시 DB 를 다루는 것이다. 엑셀 파일 자체를 하나의 DB 테이블로 가정하고 다음의 쿼리를 수행한다고 보면 된다

OleDbCommand cmd = new OleDbCommand(SQL,ExcelConn);

OracleConnection conn = new OracleConnection("Data Source=.....;User ID=....;Password=......;");
//이 부분이 필요한 이유는 엑셀에서 읽어들인 데이터를 실제 Oracle DB에 insert 하기 위해서이다

//dataGrid에 뿌려주기 위한 방법이다.

OracleCommand cmd1 = new OracleCommand();
cmd1.Connection = conn;
conn.Open();
string strQuery1 = "엑셀파일을 집어넣을 테이블의 모든 정보를 가져오는 select 쿼리";
OracleDataAdapter da1 = new OracleDataAdapter(strQuery1,conn);
DataSet ds1 = new DataSet();
da1.Fill(ds1,"테이블명");

//데이터 리더로 읽기 엑셀 파일을 읽어들일때 필요한 것이 데이터 리더

OleDbDataReader reader = cmd.ExecuteReader();

while(reader.Read())

{

DataRow rowNew;

//rowNew를 통해 엑셀 파일의 정보를 받아들이고, 그 값을 DB에 insert 한다
rowNew=ds1.Tables["테이블명"].NewRow();
rowNew["DB컬럼명"] = reader[0].ToString();//품목
//............................컬럼수에 맞게 reader를 써 주면 된다.. reader[0] ->이것은 첫번째 컬럼이다

ds1.Tables["CMS"].Rows.Add(rowNew);
// 다읽은 다음에 Oracle DB에 insert
strQuery1 = "insert into............";

cmd1 = new OracleCommand(strQuery1, conn);

da1.InsertCommand = cmd1;

//데이터베이스 업데이트
da1.Update(ds1.Tables["테이블명"]);

}
string strQuery = "dataGrid에 뿌려줄 내용을 select하는 쿼리";
OracleDataAdapter da = new OracleDataAdapter(strQuery,conn);
DataSet ds = new DataSet();
da.Fill(ds,"테이블명");
dataGrid1.DataSource = ds;
dataGrid1.DataMember="테이블명";
reader.Close();

ExcelConn.Close();
MessageBox.Show("엑셀 변환이 완료되었습니다","완료");

}

}//예전의 if문을 닫아준다

}

catch

{

MessageBox.Show("중복되는 파일입니다. 파일을 다시한번확인해주세요","확인");

}

//ds.Table[0].DefaultView

--------------------------------------------------------------------------------

'[ Program ] > C#' 카테고리의 다른 글

텍스트 박스 유효성 검사 모음 (일반, 정규식)  (0) 2012.09.18
C# NameSpace 총정리  (0) 2012.09.18
어트리뷰트와 기타 기능  (0) 2012.09.18
애트리뷰트(Attribute)  (0) 2012.09.18
【 C# 】 Attribute  (0) 2012.09.18

댓글