programing

c#을 사용하여 엑셀 파일에서 데이터를 읽는 방법

powerit 2023. 5. 13. 11:02
반응형

c#을 사용하여 엑셀 파일에서 데이터를 읽는 방법

내 애플리케이션은 엑셀 파일에서 데이터를 읽어야 합니다.사용하고 있습니다.개발을 위한 네트 및 c#.시스템에 MS 오피스를 설치할 수 없습니다.그 때문에 내 애플리케이션은 엑셀 파일을 읽지 못하고 엑셀을 위해 dll을 로드하는 동안 오류를 발생시킵니다.

ms오피스가 설치되지 않은 시스템에서 애플리케이션의 엑셀 파일에 액세스하려면 어떻게 해야 합니까?

사용할 수 있는 옵션이 있습니다.OleDB데이터베이스의 데이터 테이블처럼 Excel 시트를 사용합니다.

예를 들면...

string con =
  @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\temp\test.xls;" + 
  @"Extended Properties='Excel 8.0;HDR=Yes;'";    
using(OleDbConnection connection = new OleDbConnection(con))
{
    connection.Open();
    OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection); 
    using(OleDbDataReader dr = command.ExecuteReader())
    {
         while(dr.Read())
         {
             var row1Col0 = dr[0];
             Console.WriteLine(row1Col0);
         }
    }
}

이 예는 다음을 사용합니다.Microsoft.Jet.OleDb.4.0공급자가 Excel 파일을 열고 읽을 수 있습니다.그러나 파일이 xlsx 유형(Excel 2007 이상)인 경우 마이크로소프트 Access Database Engine 구성 요소를 다운로드하여 대상 시스템에 설치해야 합니다.

제공자가 호출되었습니다.Microsoft.ACE.OLEDB.12.0;이 구성 요소에는 32비트용과 64비트용의 두 가지 버전이 있습니다.응용프로그램의 비트 및 설치된 Office 버전(있는 경우)에 적합한 버전을 선택합니다.해당 드라이버가 응용 프로그램에 맞게 올바르게 작동하도록 하려면 많은 문제가 있습니다.를 들어 이 질문을 참조하십시오.

물론 대상 컴퓨터에 Office를 설치할 필요는 없습니다.

이 접근 방식에는 장점이 있지만, C#에서 엑셀 파일 읽기 질문의 댓글로 표시되는 링크에 특히 주의를 기울여야 한다고 생각합니다.데이터 유형을 올바르게 해석하고 단일 엑셀 셀에 있는 데이터 길이가 255자를 초과하는 경우 몇 가지 문제가 있습니다.

Excel 97-2003 파일 읽기용 CSSharpJEXcel(XLS), Excel 2007/2010 파일 읽기용 Excel 패키지(Office Open XML 형식, XLSX) 및 두 형식을 모두 처리할 수 있는 것으로 보이는 Excel DataReader

행운을 빕니다.

Excel 파일을 CSV에 저장하고 FileHelper와 같은 CSV 판독기 라이브러리를 사용하여 C#으로 결과 파일을 읽습니다.

이것을 테스트할 수 있는 기계가 없지만 작동할 것입니다.먼저 2007 Office System Driver: Data Connectivity Components 또는 Microsoft Access Database Engine 2010 Redistributable을 설치해야 합니다.그런 다음 다음 코드를 사용해 보십시오. 아래 Select 문에서 Excel 파일의 시트 이름과 일치하도록 시트 이름을 변경해야 합니다.

using System.Data;
using System.Data.OleDb;

namespace Data_Migration_Process_Creator
{
    class Class1
    {
        private DataTable GetDataTable(string sql, string connectionString)
        {
            DataTable dt = null;

            using (OleDbConnection conn = new OleDbConnection(connectionString))
            {
                conn.Open();
                using (OleDbCommand cmd = new OleDbCommand(sql, conn))
                {
                    using (OleDbDataReader rdr = cmd.ExecuteReader())
                    {
                        dt.Load(rdr);
                        return dt;
                    }
                }
            }
        }

        private void GetExcel()
        {
            string fullPathToExcel = "<Path to Excel file>"; //ie C:\Temp\YourExcel.xls
            string connString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR=yes'", fullPathToExcel);
            DataTable dt = GetDataTable("SELECT * from [SheetName$]", connString);

            foreach (DataRow dr in dt.Rows)
            {
                //Do what you need to do with your data here
            }
        }
    }
}

참고: (Office가 설치된 One)에서 이를 테스트할 환경이 없기 때문에 사용자 환경에서 작동할지 여부는 말할 수 없지만 작동하지 않아야 하는 이유는 알 수 없습니다.

파일을 Excel 파일로 합니다..csv파일(별도로 구분된 값 파일)을 사용하여 쉽게 읽을 수 있습니다.

언급URL : https://stackoverflow.com/questions/15793442/how-to-read-data-from-excel-file-using-c-sharp

반응형