2010-08-05 4 views
0

Excel 시트에서 열 이름을 검색하는 데 문제가 있습니다. A1에열 이름 읽기 문제가 발생합니다. GetName 및 OLEDB Excel 공급자

  • :하십시오

    B1에서
  • : B C1에

  • I 이들 3 개 값이 첫 번째 행에서 단지 3 개의 셀 엑셀 시트를 가지고 ABC

내 방법을 실행하려고하면 레이블이 표시됩니다 :

  • A, B, A # B 형 #의 C

그리고하지 :

  • A, B, ABC

내 코드 :

protected void btnExecute_Click(object sender, EventArgs e) 
    { 
     string fullFileName = @"C:\TEST.xls"; 
     List<string> columns = new List<string>(); 

     string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;", fullFileName); 

     using (OleDbConnection conn = new OleDbConnection(connectionString)) 
     { 
      conn.Open(); 

      // Retrieves the first sheet 
      DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
      string firstSheet = dt.Rows[0]["TABLE_NAME"].ToString(); 

      // Retrieves the list column name 
      string query = string.Format("SELECT TOP 1 * FROM [{0}]", firstSheet); 
      OleDbCommand cmd = new OleDbCommand(query, conn); 
      OleDbDataReader reader = cmd.ExecuteReader(); 
      for (int i = 0; i < reader.FieldCount; i++) 
      { 
       columns.Add(reader.GetName(i)); 
      } 
     } 

     lblCols.Text = string.Join(",", columns.ToArray()); 
    } 

이 문제를 해결할 생각이 있습니까 ??

미리 감사드립니다.

다니엘은

답변

0

내가 스택 오버 플로우를 통해 게시 된이 OleDBAdapter Excel QA을보십시오.

방금 ​​테스트 한 결과, 사용자가 설명한 샘플 .xls에서 "A.B.C"가 선택되었습니다.
즉, 빠른 테스트를 위해 하단에 다음을 추가하십시오.

Object o = ds.Tables["xlsImport"].Rows[0]["LocationID"]; 
Object oa = ds.Tables["xlsImport"].Rows[0]["PartID"]; 
Object row0Col3 = ds.Tables["xlsImport"].Rows[0][2]; 

string valLocationID = o.ToString(); 
string valPartID = oa.ToString(); 
string rowZeroColumn3 = row0Col3.ToString();