Excel 파일을 읽고 DataTable 및 데이터베이스로 데이터를 내보내는 C#

2024-01-25 07:12:20

Excel 파일은 표 형식의 데이터를 저장하기 위한 유비쿼터스 형식으로 남아 있으므로 해당 파일에서 정보를 효율적으로 읽고 추출하는 기능이 중요합니다. .NET Framework의 광범위한 기능을 활용하는 C#은 효율적인 데이터 조작이 가능합니다. 활용 Excel 파일을 읽는 C# 데이터베이스 및 데이터 테이블에 데이터를 쓰거나 다른 목적으로 데이터를 사용하는 것은 개발자가 Excel 데이터를 조작하는 데 탁월한 솔루션입니다.

C# to Read Excel Files and Export Data to DataTable and Database

이 글은 사용 방법에 초점을 맞췄습니다 C#을 사용하여 Excel 파일을 읽습니다. 여기에는 다음과 같은 부분이 포함됩니다.

C#에서 Excel 파일을 읽을 때의 장점 및 API

Excel 파일을 읽기 위해 C#을 활용하면 다음과 같은 이점이 있습니다.

  • 자동화 및 확장성:.NET Framework 및 API가 포함된 C#을 사용하면 Excel 파일 읽기 작업을 자동화하여 대용량 데이터를 효율적으로 처리할 수 있습니다. 개발자는 일괄 처리, 예약된 작업 또는 데이터 가져오기/내보내기 작업을 처리할 수 있는 스크립트나 응용 프로그램을 만들어 시간과 노력을 절약할 수 있습니다.
  • 유연성 및 사용자 지정: API와 함께 .NET Framework는 Excel 파일 작업 시 높은 수준의 유연성과 사용자 지정을 제공합니다. 개발자는 데이터 추출 및 변환, 특정 서식 적용, 계산 수행을 위한 사용자 지정 논리를 정의할 수 있습니다. 이를 통해 읽기 프로세스를 특정 요구 사항이나 비즈니스 규칙에 맞게 조정할 수 있습니다.

그러나 C# 및 .NET Framework만 사용하여 Excel 파일을 읽는 것은 어려운 작업이 될 수 있습니다. Excel 파일 처리를 위해 .NET Framework에서 제공하는 기본 라이브러리는 Microsoft.Office.Interop.Excel입니다. 그러나 이 라이브러리를 사용하려면 MS Excel이 설치되어 있어야 하며, 이를 이용하여 Excel 파일을 처리하는 코드 로직이 매우 복잡하여 효율적으로 Excel 파일을 읽기가 어렵습니다. 결과적으로 개발자는 Excel 파일을 효율적이고 편리하게 작업하기 위해 타사 라이브러리를 선호합니다.

Spire.XLS for .NET는 Excel 파일 처리를 위한 전문 C# API입니다. Excel 파일 읽기, 데이터베이스, 데이터 테이블 등에 데이터 쓰기 등 광범위한 형식 지원과 효율적인 Excel 데이터 조작 기능이 있습니다. 사용자는 다음을 수행할 수 있습니다. 공식 사이트에서 Spire.XLS for .NET를 다운로드하거나 NuGet을 통해 설치하세요.

PM> Install-Package Spire.XLS

C#에서 Excel 파일 읽기 시작하기

Spire.XLS for .NET를 사용하면 개발자는 다음을 수행할 수 있습니다 Excel 파일 생성, 읽기, 쓰기 및 조작 간단한 코드를 사용하여 .NET 애플리케이션에서

Spire.XLS를 효과적으로 사용하려면 다양한 클래스, 속성 및 메서드와 상호 작용해야 합니다. 다음은 주요 내용과 그에 대한 설명을 요약한 표입니다.

안건 설명
워크북 수업 Excel 통합 문서를 나타내며 해당 내용을 읽고 조작하는 방법을 제공합니다.
워크시트 수업 통합 문서 내의 개별 워크시트를 나타냅니다.
Workbook.LoadFromFile 메서드 파일에서 Excel 통합 문서를 로드합니다.
통합 문서.워크시트 속성 통합 문서의 워크시트 컬렉션을 가져옵니다.
Worksheet.Range[] 속성 워크시트의 셀 범위를 가져옵니다(색인은 1부터 시작).
CellRange.Value 속성 셀 값을 가져오거나 설정합니다.
CellRange.Text 속성 셀의 표시된 텍스트를 가져오거나 설정합니다.

Spire.XLS for .NET를 사용하여 Excel 파일을 읽는 일반적인 작업 흐름에는 다음 단계가 포함됩니다.

  1. Workbook.LoadFromFile() 메서드를 사용하여 Excel 파일을 로드합니다.
  2. Workbook.Worksheets[] 속성을 통해 워크시트에 액세스합니다.
  3. Worksheet.Range[] 속성을 통해 셀에 액세스합니다.
  4. CellRange.Text 속성을 통해 셀에 표시된 텍스트에 액세스하거나 CellRange.Value 속성을 통해 셀 값(텍스트, 숫자, 수식 등)에 액세스합니다.
  5. 데이터를 검색하고 텍스트 파일, 데이터베이스 등에 데이터를 쓰거나 기타 원하는 작업을 수행합니다.
  6. 셀 값을 데이터 테이블로 내보내려면 개발자가 Worksheet.ExportDataTable() 메서드를 직접 사용할 수 있으며 이 메서드는 DataTable 개체를 반환합니다.
  7. 또는 개발자가 Workbook.SaveToFile() 메서드를 사용하여 통합 문서를 지원되는 형식으로 직접 변환할 수도 있습니다.

즉, 이 API는 개발자가 간단한 코드를 사용하여 Excel 파일을 로드하고 해당 내용을 읽을 수 있도록 하는 클래스와 속성을 제공하므로 C#을 사용하여 Excel 파일을 효율적이고 간단하게 읽을 수 있습니다. 게다가 직접 가능하게 해줍니다. 통합 문서 및 워크시트를 PDF로 변환, HTML, XML 및 기타 파일 형식.

Excel 파일을 텍스트로 읽는 C#

Excel 파일을 읽고 C#을 사용하여 텍스트 파일에 데이터를 쓰는 단계:

  1. 필요한 네임스페이스를 가져옵니다.
  2. Workbook 클래스의 개체를 만들고 Workbook.LoadFromFile() 메서드를 사용하여 Excel 파일을 로드합니다.
  3. Workbook.Worksheets[] 속성을 통해 첫 번째 워크시트를 가져옵니다
  4. 워크시트에 데이터를 쓸 텍스트 파일을 만듭니다.
  5. 할당된 행과 열을 반복하고, Worksheet.Range[] 속성을 통해 셀에 액세스하고, CellRange.Text 속성을 통해 각 셀에 표시된 텍스트를 가져와 텍스트 파일에 씁니다.
  6. 자원을 공개하세요.

코드 예:

  • C#
using Spire.Xls;
    using System.IO;
    
    class Program
    {
        static void Main(string[] args)
        {
            // Load the Excel file
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("Sample.xlsx");
    
            // Get the first worksheet
            Worksheet worksheet = workbook.Worksheets[0];
    
            // Create an output text file
            string outputFile = "Output.txt";
            StreamWriter writer = new StreamWriter(outputFile);
    
            // Iterate through the rows and columns of the worksheet and write the data to the text file
            for (int row = 1; row <= worksheet.LastRow; row++)
            {
                for (int col = 1; col <= worksheet.LastColumn; col++)
                {
                    CellRange range = worksheet.Range[row, col];
                    string cellValue = range.Text == null ? string.Empty : range.Text.ToString();
                    writer.Write(cellValue + "\t"); // Separate cell data using a tab character
                }
                writer.WriteLine(); // Write a line break
            }
    
            // Close the writer and save the text file
            writer.Close();
    
            // Release resources
            workbook.Dispose();
        }
    }

The reading result:

C# to Read Excel Files and Export Data to DataTable and Database

Excel 파일을 DataTable로 읽어들이기 위한 C Sharp의 코드

DataTable 은 .NET Framework의 데이터 테이블을 나타내는 개체입니다. 메모리에 데이터를 저장하고 조작하는 데 사용되며 정렬, 필터링, 수정, 내보내기 등의 작업을 수행할 수 있습니다. 개발자는 C#을 사용하여 Excel 파일 데이터를 읽고 이를 DataTable 개체에 쓸 수 있으므로 데이터의 추가 처리가 쉬워집니다. 단계는 다음과 같습니다.

  1. 필요한 네임스페이스를 가져옵니다.
  2. Workbook 클래스의 개체를 만들고 Workbook.LoadFromFile() 메서드를 사용하여 Excel 파일을 로드합니다.
  3. Workbook.Worksheets[] 속성을 통해 첫 번째 워크시트를 가져옵니다.
  4. Worksheet.ExportDataTable() 메서드를 사용하여 워크시트의 데이터를 DataTable 개체로 내보냅니다.
  5. 자원을 공개하세요.

코드 예:

  • C#
using Spire.Xls;
    using System.Data;
    
    namespace ExcelToAccess
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Create an object of Workbook class
                Workbook workbook = new Workbook();
    
                // Load an Excel file
                workbook.LoadFromFile("Sample.xlsx");
    
                // Get the first worksheet
                Worksheet worksheet = workbook.Worksheets[0];
    
                // Export the data from the worksheet to a DataTable object
                DataTable dataTable = worksheet.ExportDataTable();
    
                workbook.Dispose();
            }
        }
    }

Excel 파일을 읽고 데이터베이스에 삽입하는 C# 코드

이 예에서는 C# 코드를 사용하여 Access 데이터베이스를 사용하는 데이터베이스에 Excel 워크시트 데이터를 쓰는 방법을 보여줍니다. 이 방법에는 System.Data.OleDB 네임스페이스도 필요합니다. 사용 중인 .NET Framework에 없는 경우 패키지 관리 콘솔에 다음 코드를 입력하여 설치할 수 있습니다.

Install-Package System.Data.OleDb

Excel 파일을 읽고 데이터베이스에 삽입하는 단계는 다음과 같습니다.

  1. 필요한 네임스페이스를 가져옵니다.
  2. Workbook 클래스의 개체를 만들고 Workbook.LoadFromFile() 메서드를 사용하여 Excel 파일을 로드합니다.
  3. Workbook.Worksheets[] 속성을 사용하여 첫 번째 워크시트를 검색합니다.
  4. Worksheet.Name 속성에 액세스하여 워크시트 이름을 테이블 이름으로 가져옵니다.
  5. Worksheet.Rows[] 속성을 사용하여 첫 번째 행의 CellRange 객체에 액세스하고 각 열의 값을 문자열 배열에 저장하여 첫 번째 행을 열 이름으로 검색합니다.
  6. 데이터베이스의 연결 문자열과 파일 경로를 지정하여 OleDbConnection을 사용하여 Access 데이터베이스에 연결합니다.
  7. 테이블 이름, 열 이름, 데이터 유형을 포함하여 테이블 생성을 위한 SQL 쿼리 문자열을 동적으로 생성하여 데이터 테이블을 생성합니다.
  8. OleDbCommand 개체와 ExecuteNonQuery 메서드를 사용하여 테이블 만들기 쿼리를 실행합니다.
  9. Excel 워크시트의 각 행(두 번째 행부터 시작)을 반복하고 매개변수화된 쿼리로 삽입 문을 구성하여 데이터를 삽입합니다. 각 데이터 행을 Access 데이터베이스 테이블에 삽입합니다.
  10. 데이터베이스 연결을 닫고 리소스를 해제합니다.

코드 예:

  • C#
using Spire.Xls;
    using System.Data.OleDb;
    
    class Program
    {
        static void Main(string[] args)
        {
            // Set the Excel file path
            string excelFilePath = "Sample.xlsx";
            // Set the Access database file path
            string accessDbFilePath = "Sample.accdb";
    
            // Load the Excel file
            Workbook workbook = new Workbook();
            workbook.LoadFromFile(excelFilePath);
    
            // Get the first worksheet
            Worksheet worksheet = workbook.Worksheets[0];
    
            // Use the worksheet name as the table name
            string tableName = worksheet.Name;
    
            // Get the first row as column names
            CellRange headerRange = worksheet.Rows[0];
            string[] columnNames = new string[headerRange.Columns.Length];
            for (int i = 0; i < headerRange.Columns.Length; i++)
            {
                columnNames[i] = headerRange.Columns[i].Value.Replace(" ", "_");
            }
    
            // Connect to the Access database
            string connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={accessDbFilePath};Persist Security Info=False;";
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                connection.Open();
    
                // Create the table
                string createTableQuery = $"CREATE TABLE [{tableName}] ({string.Join(", ", columnNames.Select(c => $"[{c}] Memo"))})";
                using (OleDbCommand createTableCommand = new OleDbCommand(createTableQuery, connection))
                {
                    createTableCommand.ExecuteNonQuery();
                }
    
                // Insert data
                string insertQuery = $"INSERT INTO [{tableName}] ({string.Join(", ", columnNames.Select(c => $"[{c}]"))}) VALUES ({string.Join(", ", columnNames.Select(c => $"@{c}"))})";
                using (OleDbCommand insertCommand = new OleDbCommand(insertQuery, connection))
                {
                    foreach (CellRange row in worksheet.Rows.Cast().Skip(1))
                    {
                        for (int i = 0; i < row.Columns.Length; i++)
                        {
                            insertCommand.Parameters.AddWithValue($"@{columnNames[i]}", row.Columns[i].Value);
                        }
    
                        insertCommand.ExecuteNonQuery();
                        insertCommand.Parameters.Clear();
                    }
                }
    
                connection.Close();
                workbook.Dispose();
            }
        }
    }

읽고 삽입한 결과:

C# to Read Excel Files and Export Data to DataTable and Database

API에 대한 무료 라이선스 받기

Spire.XLS for .NET 는 개발자, 기업 및 개인 사용자가 사용 제한이나 워터마크 없이 강력한 Excel 파일 처리 기능을 탐색할 수 있도록 무료 평가판 라이선스를 제공합니다. 에 의해 무료 라이센스를 취득하고, 사용자는 Spire.XLS for .NET의 잠재력을 극대화하고 파일 처리 기능을 확장하며 Excel 파일 처리 효율성을 크게 향상시킬 수 있습니다.

결론

이 기사에서는 다음 방법을 알아봅니다 C#을 사용하여 Excel 파일 읽기 다양한 목적으로 데이터를 추출합니다. Spire.XLS for .NET의 강력한 기능을 활용하여 개발자는 Excel 데이터를 효율적으로 조작하고, 이를 다른 형식으로 내보내며, 데이터 기반 애플리케이션을 향상시킬 수 있습니다. 단계별 지침, 코드 예제 및 처리 결과의 그래픽 프레젠테이션을 통해 이 가이드는 파일 처리 효율성을 최적화하고 C# 프로젝트에서 데이터 분석의 잠재력을 최대한 활용하는 데 도움이 됩니다.

또한보십시오