XLS
파일에서 데이터를 가져올 수 있도록 허용하고 싶습니다. 이미 CSV
개의 파일과 XML
개의 파일을 가지고 있지만 사용자의 범위를 열고 싶습니다. 파일을로드하는 데 문제가 있습니다. 파일 (XLS
, CSV
, XML
)을 데이터 세트에로드하고 거기에서 작업합니다. XLS
의 로딩 코드는 Microsoft Jet 엔진을 사용하여 XLS 파일 읽기
FileInfo fi = new FileInfo(filename);
//create and open a connection with the supplied string
OleDbConnection objOleDBConn;
objOleDBConn = new OleDbConnection(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'", fi.FullName));
objOleDBConn.Open();
DataTable dt = objOleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null || dt.Rows.Count == 0)
{
return;
}
string sheet = dt.Rows[0]["TABLE_NAME"].ToString();
//then read the data as usual.
OleDbDataAdapter objOleDBDa;
objOleDBDa = new OleDbDataAdapter(string.Format("select * from [{0}]",sheet), objOleDBConn);
objOleDBDa.Fill(data);
objOleDBConn.Close();
그래서 내 데이터를 확인로드되는
이하이지만, 다양한 컬럼의 데이터 유형을 설정하기 위해 나타나고,이 내 열 중 하나에 대한 문제입니다. 비트 필드이고False
,
True
,
Yes
,
No
,
Y
및
N
을 허용하도록 선택했습니다. 나중에 이것을 부울로 전송하는 코드가 있습니다. 이 파일은
CSV
파일 (연결 문자열이 다르지만)에서 작동하지만
XLS
에서 처음 10 개의 행이
FALSE
또는
TRUE
이라고 말한 다음 11 번째가
YES
이라고 말하면 null 항목 만 표시됩니다. 나는 그것이 처음 몇 개의 엔트리를 읽고 그걸 기반으로 데이터 타입을 결정한다고 추측하고있다.
질문 : 처음 몇 개의 항목을 기반으로 열의 데이터 형식을 식별하는 메커니즘을 해제 할 수 있습니까?
당신은 = 1 연결 문자열의 확장 속성에 MAXSCANROWS를 추가 시도해 볼 수도 있습니다에 대한 코드의 끝에이를 추가 한 다음 시트의 첫 번째 행의 텍스트 필드가 아니면. 나는 결코 이것을 시험해 보지 않았다. 그러나 그것은 일할지도 모른다?? – Tester101