Категория

C# для чтения файлов Excel и экспорта данных в DataTable и базу данных

2024-01-25 07:15:38

Файлы Excel остаются распространенным форматом хранения табличных данных, поэтому возможность эффективного чтения и извлечения из них информации имеет решающее значение. C#, используя обширные функциональные возможности .NET Framework, способен эффективно манипулировать данными. Использование C# для чтения файлов Excel и записывать свои данные в базы данных и таблицы данных или использовать данные для других целей — это отличное решение для разработчиков по манипулированию данными Excel.

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

В этой статье основное внимание уделяется тому, как использовать C# для чтения файлов Excel. Он включает в себя следующие части:

Преимущества и API для чтения файлов Excel на C#

Использование C# для чтения файлов Excel дает следующие преимущества:

  • Автоматизация и масштабируемость: C# с .NET Framework и API позволяет автоматизировать задачи чтения файлов Excel, что позволяет эффективно обрабатывать большие объемы данных. Разработчики могут создавать сценарии или приложения, которые могут выполнять пакетную обработку, запланированные задачи или операции импорта/экспорта данных, экономя время и усилия.
  • Гибкость и настройка: .NET Framework вместе с API-интерфейсами обеспечивает высокий уровень гибкости и настройки при работе с файлами Excel. Разработчики могут определять собственную логику для извлечения и преобразования данных, применения определенного форматирования или выполнения вычислений. Это позволяет адаптировать процесс чтения к конкретным требованиям или бизнес-правилам.

Однако чтение файлов Excel с использованием только C# и .NET Framework может оказаться сложной задачей. Собственная библиотека, предоставляемая .NET Framework для обработки файлов Excel, — Microsoft.Office.Interop.Excel. Однако использование этой библиотеки требует установки MS Excel, а логика кода для обработки файлов Excel с ее помощью чрезвычайно сложна, что затрудняет эффективное чтение файлов Excel. В результате разработчики предпочитают сторонние библиотеки для эффективной и удобной работы с файлами Excel.

Spire.XLS for .NET— это профессиональный API C# для обработки файлов Excel. Он обеспечивает обширную поддержку форматов и эффективное манипулирование данными Excel, включая чтение файлов Excel и запись данных в базу данных, таблицу данных и т. д. Пользователи могут скачайте Spire.XLS for .NET с официального сайта или установите его через NuGet.

PM> Install-Package Spire.XLS

Начало работы с чтением файлов Excel на C#

Spire.XLS for .NET позволяет разработчикам создавать, читать, записывать и манипулировать файлами Excel в своих .NET-приложениях с помощью простого кода.

Для эффективной работы со Spire.XLS вам придется взаимодействовать с различными классами, свойствами и методами. Вот таблица, в которой суммированы некоторые из основных из них вместе с их описаниями:

Элемент Описание
Класс рабочей книги Представляет книгу Excel и предоставляет методы для чтения и управления ее содержимым.
Класс рабочего листа Представляет отдельный лист в книге.
Метод Workbook.LoadFromFile Загружает книгу Excel из файла.
Свойство Workbook.Worksheets Получает коллекцию листов в книге.
Свойство Worksheet.Range[] Получает диапазон ячеек на листе (индексы отсчитываются от 1).
Свойство CellRange.Value Получает или задает значение ячейки.
Свойство CellRange.Text Получает или задает отображаемый текст ячейки.

Типичный рабочий процесс использования Spire.XLS for .NET для чтения файлов Excel включает следующие шаги:

  1. Загрузите файл Excel с помощью метода Workbook.LoadFromFile().
  2. Доступ к листам осуществляется через свойство Workbook.Worksheets[].
  3. Доступ к ячейкам осуществляется через свойство Worksheet.Range[].
  4. Доступ к отображаемому тексту в ячейках через свойство CellRange.Text или доступ к значению ячеек (текст, числа, формулы и т. д.) через свойство CellRange.Value.
  5. Извлекайте данные, записывайте их в текстовые файлы, базы данных и т. д. или выполняйте другие необходимые операции.
  6. Чтобы экспортировать значения ячеек в таблицу данных, разработчики могут напрямую использовать метод Worksheet.ExportDataTable(), и он вернет объект DataTable.
  7. Альтернативно, разработчики также могут напрямую конвертировать книгу с помощью метода Workbook.SaveToFile() в любой поддерживаемый формат.

Короче говоря, этот API предоставляет классы и свойства, которые позволяют разработчикам загружать файлы Excel и читать их содержимое с помощью простого кода, что делает чтение файлов Excel с помощью C# эффективным и простым. Кроме того, это позволяет напрямую преобразование книг и листов в PDF, HTML, XML и другие форматы файлов.

C# для чтения файлов Excel в текст

Шаги по чтению файлов Excel и записи данных в текстовые файлы с помощью C#:

  1. Импортируйте необходимые пространства имен.
  2. Создайте объект класса Workbook и загрузите файл Excel с помощью метода Workbook.LoadFromFile() .
  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

Код на C Sharp для чтения файлов Excel в таблицы данных

DataTable— это объект, представляющий таблицу данных в .NET Framework. Он используется для хранения данных в памяти и управления ими и может выполнять такие операции, как сортировка, фильтрация, изменение и экспорт. Разработчики могут использовать C# для чтения данных файла Excel и записи их в объект DataTable, что упрощает дальнейшую обработку данных. Ниже приведены шаги:

  1. Импортируйте необходимые пространства имен.
  2. Создайте объект класса Workbook и загрузите файл Excel с помощью метода Workbook.LoadFromFile().
  3. Получите первый лист с помощью свойства Workbook.Worksheets[].
  4. Экспортируйте данные из листа в объект DataTable с помощью метода Worksheet.ExportDataTable().
  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();
            }
        }
    }

Код C# для чтения файлов Excel и вставки в базы данных

В этом примере показано, как использовать код C# для записи данных листа Excel в базу данных с помощью базы данных Access. Для этого метода также требуется пространство имен System.Data.OleDB. Если используемая вами .NET Framework не имеет его, вы можете установить его, введя следующий код в консоли управления пакетами:

Install-Package System.Data.OleDb

Шаги для чтения файла Excel и вставки в базу данных следующие:

  1. Импортируйте необходимые пространства имен.
  2. Создайте объект класса Workbook и загрузите файл Excel с помощью метода Workbook.LoadFromFile().
  3. Получите первый лист с помощью свойства Workbook.Worksheets[].
  4. Получите имя листа в качестве имени таблицы, обратившись к свойству Worksheet.Name.
  5. Получите первую строку как имена столбцов, обратившись к объекту CellRange первой строки с помощью свойства Worksheet.Rows[] и сохранив значение каждого столбца в массиве строк.
  6. Подключитесь к базе данных Access с помощью OleDbConnection, указав строку подключения и путь к файлу базы данных.
  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#.

Смотрите также