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 |
댓글