ADO.NET Excel 데이터 읽기

6841 단어 직장레저
ADO를 처음 써봤던 기억이 나요.NET는 EXCEL 파일 데이터를 읽을 때 많은 문제에 부딪혔고 많은 자료를 찾아서 다음과 같은 Function을 썼다. Excel 파일에 있는 모든sheet 데이터에 대한 읽기를 실현하고 최종적으로 DataSet 실례를 되돌려주었다.ADO.NET는 강력하지만 Excel에 사용하기에는 좀 딱딱하고 많은 부분이 원활하지 않다.그러나 Excel 데이터가 비교적 정연하다면 이 방법은 비교적 효율적이다.
연결 문자열을 쓸 때 많은 시간을 들였는데, 결국 많은 것을 알게 되었다. 만약에 Excel이 같은 열에 있는 데이터가 날짜와 정수가 동시에 있다면, Jet을 사용한다.4.0, 추출된 데이터는 ACE를 사용하는 경우 NULL입니다.12.0, 많은 번거로움을 줄일 수 있습니다. 하나는 Jet입니다.4.0 office2003(.xls) 파일, ACE만 지원합니다.12.0은 2003 및 2007을 지원합니다.연결 문자열의 HDR=YES는 Excel이 제목 행을 포함하고 있음을 나타냅니다.

  
  
  
  
  1. using System;  
  2. using System.Linq;  
  3. using System.Text;  
  4. using System.Data.OleDb;  
  5. using System.Data;   
  6. public DataSet ExcelToDataSet(string excelFilePath)  
  7.         {  
  8.             //DB Connection String Var  
  9.             string strCon = string.Empty;  
  10.  
  11.             #region  "OLEDB.4.0 & OLEDB.12.0"  
  12.  
  13.             if (excelFilePath.EndsWith(".xls") || excelFilePath.EndsWith(".xlsx"))  
  14.                 //  strCon = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFilePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";  
  15.                 strCon = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFilePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";  
  16.             else 
  17.                 throw new Exception(" �_,� ��.xls( .xlsx) �n");  
  18.  
  19.             #endregion  
  20.  
  21.             try 
  22.             {  
  23.                 using (OleDbConnection conn = new OleDbConnection(strCon) /*Create  one DB Connection */)  
  24.                 {  
  25.                     // Created Table save excel sheet information   
  26.                     DataTable dtSheetName;  
  27.                     DataSet ds = new DataSet();  
  28.                     conn.Open();  
  29.                     // Get All Sheet of Excel File And Write Memory DB Table  
  30.                     dtSheetName = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { nullnullnull"TABLE" });  
  31.                     string sheetName = string.Empty;  
  32.                     string sql = string.Empty;  
  33.                     foreach (DataRow row in dtSheetName.Rows)  
  34.                     {  
  35.                         sheetName = row[2].ToString();  
  36.                         sql = "select * from [" + sheetName + "]";  
  37.                         OleDbDataAdapter myDbAdapter = new OleDbDataAdapter(sql, strCon);  
  38.                         myDbAdapter.Fill(ds, sheetName.TrimEnd('$'));  
  39.                     }  
  40.                     conn.Close();  
  41.                     return ds;  
  42.                 }  
  43.             }  
  44.             catch (Exception ex)  
  45.             {  
  46.                 throw ex;  
  47.             }  
  48.         } 

좋은 웹페이지 즐겨찾기