허 참... 환장하겠습니다..
엑셀파일을 읽어서 데이터셋에 집어넣는 부분인데요...
List는 엑셀파일 경로가 저장되어 있습니다.
da는 어뎁터구요... ds는 데이터 셋입니다.
string source=@"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" +List+ ";Extended Properties="Excel 8.0;HDR=YES"";
string select = "SELECT * FROM [sheet1$]";
conn = new OleDbConnection(source);
da = new OleDbDataAdapter(select,conn);
ds.Clear();
da.Fill(this.ds,"[sheet1$]");
this.dataView1.Table = this.ds.Tables[0];
이렇게 했습니다. 근데 문제점은 엑셀파일을 건드리지 않고 ... (원래 입력자료가 있습니다.)
콜롬별로 읽어오며은.... 자료가 있어도 읽어 지지가 않습니다..
그러다가 엑셀파일을 콜롬에 데이터를 1개라도 넣으면 자료가 콜롬 자료가 다 읽어 지는군요 ㅡㅡ;;;
엑셀파일을 수정해야만 데이터가 읽어지다니 ㅡㅡ;;; 왜 그런지 이유를 모르겠군요..
수정안하고 데이터를 곧바로 읽을수 있으면 참 좋겠는데..
방법이 없을까요?
--답변
컬럼이 숫자형인데 첫 칸이(헤더제외) 비어 있으면 그 컬럼은 모두 안읽어 집니다.
제 생각으로는 첫번째 칸에서 데이터 타입이 결정되고 빈 칸은 문자로 인식해서 뒤에 숫자형 컬럼이 오면 무시해버리는 것 같더군요..
해결 방법은 지금까지 찾아 본결과 없는 것으로 압니다.
읽으려고 하는 엑셀 파일을 생성 할때 템플릿을 만들어서 컬럼의 데이터 형을 잘못 입력하지 않도록 제약을 줘서 에러가 나는 것을 방지하더군요
HDR=YES이면 첫행을 칼름이름 임
string strCon=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\myExcel.xls;Extended Properties=""Excel 8.0;HDR=YES""" ;
OleDbConnection ExcelConn=new OleDbConnection(strCon);
ExcelConn.Open();
string SQL =@"SELECT CustomerID, CompanyName, ContactName, Country, Phone FROM [Sheet1$] ";
OleDbCommand cmd=new OleDbCommand(SQL,ExcelConn);
OleDbDataReader reader=cmd.ExecuteReader();
-------------------------------------
HDR=NO이면 첫행부터 데이타 임
string strCon=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\myExcel.xls;Extended Properties=""Excel 8.0;HDR=No""" ;
string SQL =@"SELECT F1,F2,F3,F4,F5 FROM [Sheet2$] ";
와 같이 F1...이런식을 할수 있음.
'ASP.NET' 카테고리의 다른 글
엑셀 3 (0) | 2005.04.27 |
---|---|
엑셀_2 (0) | 2005.04.27 |
사용자 지정 데이터 바인딩 (0) | 2005.03.18 |
보안 문제! ASP.NET 2.0으로 해결하세요! (0) | 2005.03.18 |
C# 2.0에서 편집하며 계속하기 기능 사용 (0) | 2005.03.18 |