ADO.NET Excel 데이터 읽기
연결 문자열을 쓸 때 많은 시간을 들였는데, 결국 많은 것을 알게 되었다. 만약에 Excel이 같은 열에 있는 데이터가 날짜와 정수가 동시에 있다면, Jet을 사용한다.4.0, 추출된 데이터는 ACE를 사용하는 경우 NULL입니다.12.0, 많은 번거로움을 줄일 수 있습니다. 하나는 Jet입니다.4.0 office2003(.xls) 파일, ACE만 지원합니다.12.0은 2003 및 2007을 지원합니다.연결 문자열의 HDR=YES는 Excel이 제목 행을 포함하고 있음을 나타냅니다.
- using System;
- using System.Linq;
- using System.Text;
- using System.Data.OleDb;
- using System.Data;
- public DataSet ExcelToDataSet(string excelFilePath)
- {
- //DB Connection String Var
- string strCon = string.Empty;
-
- #region "OLEDB.4.0 & OLEDB.12.0"
-
- if (excelFilePath.EndsWith(".xls") || excelFilePath.EndsWith(".xlsx"))
- // strCon = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFilePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";
- strCon = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFilePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";
- else
- throw new Exception(" �_,� ��.xls( .xlsx) �n");
-
- #endregion
-
- try
- {
- using (OleDbConnection conn = new OleDbConnection(strCon) /*Create one DB Connection */)
- {
- // Created Table save excel sheet information
- DataTable dtSheetName;
- DataSet ds = new DataSet();
- conn.Open();
- // Get All Sheet of Excel File And Write Memory DB Table
- dtSheetName = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
- string sheetName = string.Empty;
- string sql = string.Empty;
- foreach (DataRow row in dtSheetName.Rows)
- {
- sheetName = row[2].ToString();
- sql = "select * from [" + sheetName + "]";
- OleDbDataAdapter myDbAdapter = new OleDbDataAdapter(sql, strCon);
- myDbAdapter.Fill(ds, sheetName.TrimEnd('$'));
- }
- conn.Close();
- return ds;
- }
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
양식 제출 후 제출 버튼 비활성화텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.