2012-09-18 2 views
0

SSIS를 사용하면 Excel 드라이버를 사용하여 OLE 연결을 사용할 수 있습니다. Excel 연결을 별도로 사용할 수 있습니다.SSIS Excel 원본 연결. Excel을 읽으려면 무엇이 사용됩니까?

둘 다 두려움에 따라 파일을 읽는 데 문제가있는 것 같습니다.

"Excel 연결"을 사용할 때 SSIS에서 Excel에 연결하는 데 사용하는 기능이 궁금합니다.

VBA 외에도 서버에서 셀, 수식, 서식 등을 병합 한 Excel 파일을 읽는 것이 좋습니다. 나는 여기가 XLS를 읽는 데 사용할 코드의 업데이트

엑셀 2003을 사용하고 있습니다 :

enter image description here :이처럼 보이는 스프레드 시트를 읽을

private static void GetExcelSheets(string filePath) 
     { 
      string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'", filePath, "no"); 

      OleDbConnection excelConnection = new OleDbConnection(connectionString); 
      OleDbCommand cmdExcel = new OleDbCommand(); 
      OleDbDataAdapter oda = new OleDbDataAdapter(); 
      cmdExcel.Connection = excelConnection; 

      if (excelConnection.State == ConnectionState.Open) 
      { 
       excelConnection.Close(); 
      } 
      excelConnection.Open(); 

      OleDbCommand oleDbCommand = new OleDbCommand(); 
      oleDbCommand.CommandType = System.Data.CommandType.Text; 
      oleDbCommand.Connection = excelConnection; 
      OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter(oleDbCommand); 

      DataTable dtExcelSheetName = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
      string getExcelSheetName = dtExcelSheetName.Rows[5]["Table_Name"].ToString(); 
      oleDbCommand.CommandText = "SELECT * FROM [" + getExcelSheetName + "]"; 
      oleDbDataAdapter.SelectCommand = oleDbCommand; 
      DataTable dtExcelRecords = new DataTable(); 
      oleDbDataAdapter.Fill(dtExcelRecords); 

      excelConnection.Dispose(); 

     } 

그런 다음 디버거 비주얼 라이저를 사용하여 데이터 세트를 표시합니다. 내가 원 소스 스프레드 시트의 데이터가 표시 DataTable에 누락 된 것을 참고 :

enter image description here

제트 4.0 용 Microsoft OLE DB 공급자를 사용하여 Excel에서 연결에 대한 점에 대해서. SSIS에는 두 개의 개별 연결 개체가 있습니다. 첫 번째는 Excel Connect 개체입니다. 속성 페이지는 다음과 같습니다.

enter image description here 두 번째는 JET 드라이버를 사용하고 Excel을 가리키는 OLE 연결 개체입니다.

enter image description here

는 엑셀 연결 개체가 정말 같은 일을하고 단지 속기 방법입니다, 4.0 제트 드라이버를 사용하거나 이러한 conenction 유형은 정말 어떤 식 으로든 다른가요?

답변

1

마이크로 소프트에 따르면

엑셀 연결 관리자 연결 및 Excel 데이터 소스에 대한 데이터를 읽고 쓰는 제트 4.0 및 지원 엑셀 ISAM (순차 액세스 방법을 색인) 드라이버 용 Microsoft OLE DB 공급자를 사용 .

소스 : MSDN에 관해서는


방법을 적절히 병합 된 셀에 엑셀 시트를 가져 : 당신이 당신의 변환에 매핑되는 가장 왼쪽 열이 있는지 확인해야합니다 가치를 얻기 위해서. 병합 된 셀 집합에서 가장 왼쪽에 있지 않은 셀은 null입니다. SSIS는 일반적으로 "병합 된"셀 개념이없는 데이터베이스 소스와 함께 사용되기 때문에 이것이 합당한 기대라고 생각합니다.

+0

내 업데이트를 참조하십시오. – ChadD

+0

@ChadD : 안타깝게도 imgur 링크를 차단하는 회사 네트워크에있어 스크린 샷을 볼 수 없습니다. 내가 집에 돌아올 때 나는 따라 할려고 노력할 것이다. –