Экспорт данных из базы данных в Excel — важнейшая задача для многих организаций, позволяющая пользователям легко анализировать, визуализировать и обмениваться информацией. Этот процесс обеспечивает беспрепятственный перенос данных, сохраняя целостность и структуру исходного набора данных и предоставляя удобный для пользователя формат.
В этой статье я расскажу о пяти уникальных подходах к экспорту данных из базы данных MySQL в файл Excel, используя различные библиотеки C# Excel. Я также приведу краткое сравнение этих библиотек, подчеркнув их особенности, производительность, цену и другие важные моменты.
-
Шаги по экспорту данных из базы данных в Excel с помощью библиотеки C#
-
Экспорт данных в Excel с помощью Microsoft.Office.Interop.Excel
-
Экспорт данных в Excel с помощью EPPlus
-
Экспорт данных в Excel с помощью NPOI
-
Экспорт данных в Excel с помощью ClosedXML
-
Экспорт данных в Excel с помощью Free Spire.XLS for .NET
-
Сравнение библиотек C# Excel
Шаги по экспорту данных из базы данных в Excel с помощью библиотеки C#
-
Создайте проект на C# и импортируйте необходимые библиотеки.
-
Установите соединение с базой данных.
-
Выполните SQL-запрос для получения экспортируемых данных и сохраните их в DataTable или аналогичной структуре данных.
-
С помощью библиотеки Excel создайте новую рабочую книгу и добавьте рабочий лист.
-
Вставьте данные из DataTable в соответствующие ячейки рабочего листа.
-
Сохраните рабочую книгу по указанному пути к файлу.
Экспорт данных в Excel с помощью Microsoft.Office Interop.Excel
Microsoft.Office.Interop.Excel — это проприетарная библиотека, предоставляемая компанией Microsoft в составе пакета Microsoft Office. Она позволяет разработчикам автоматизировать и взаимодействовать с Excel, но требует установки Microsoft Excel на машине, где выполняется код.
Сама библиотека Microsoft.Office.Interop.Excel бесплатна, так как поставляется вместе с Microsoft Office. Однако для его использования на машине должна быть установлена лицензионная копия Microsoft Office. Кроме того, убедитесь, что версия библиотеки Office Interop соответствует версии установленного Office, поскольку несоответствие может привести к ошибкам типа «System.IO.FileNotFoundException: Не удалось загрузить файл или сборку».
-
Установите необходимые библиотеки:
Install-Package MySql.Data Install-Package Microsoft.Office.Interop.Excel
-
Напишите код:
using System.Data; using MySql.Data.MySqlClient; using Excel = Microsoft.Office.Interop.Excel; namespace ExportDataToExcelUsingInterop { class Program { static void Main(string[] args) { // Строка подключения к базе данных MySQL string connectionString = "Server=localhost;Database=exceldata;User ID=root;Password=admin;"; // SQL-запрос для получения данных string query = "SELECT * FROM excel_table"; // Создайте соединение с базой данных MySQL using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); MySqlCommand cmd = new MySqlCommand(query, conn); MySqlDataAdapter adapter = new MySqlDataAdapter(cmd); DataTable dataTable = new DataTable(); // Заполните DataTable данными из базы данных adapter.Fill(dataTable); // Создайте экземпляр Excel Excel.Application excelApp = new Excel.Application(); excelApp.Visible = false; // Создайте новую книгу Excel.Workbook workbook = excelApp.Workbooks.Add(); Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1]; // Добавьте заголовки столбцов в рабочий лист for (int i = 0; i < dataTable.Columns.Count; i++) { worksheet.Cells[1, i + 1] = dataTable.Columns[i].ColumnName; } // Добавьте данные в рабочий лист for (int i = 0; i < dataTable.Rows.Count; i++) { for (int j = 0; j < dataTable.Columns.Count; j++) { worksheet.Cells[i + 2, j + 1] = dataTable.Rows[i][j]; } } // Сохраните файл Excel workbook.SaveAs("ExportedData.xlsx"); workbook.Close(); excelApp.Quit(); // Освободите объекты COM System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook); System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp); } } } }
Экспорт данных в Excel с помощью EPPlus
EPPlus — это библиотека Excel для C# .NET Core и Framework с открытым исходным кодом. Она основана на формате OpenXML и использует пространство имен OfficeOpenXml. Она предоставляет простой и удобный API для создания, чтения и работы с файлами Excel в формате .xlsx, не требуя установки Microsoft Excel.
Примечание: Начиная с версии 5, EPPlus перешел на модель двойного лицензирования. Она допускает бесплатное использование в проектах с открытым исходным кодом, но требует коммерческой лицензии для использования в коммерческой деятельности.
-
Установите необходимые библиотеки:
Install-Package EPPlus Install-Package MySql.Data
-
Напишите код:
using System; using System.Data; using MySql.Data.MySqlClient; using OfficeOpenXml; namespace ExportDataToExcelUsingEPPlus { class Program { static void Main(string[] args) { // Строка подключения к базе данных MySQL string connectionString = "Server=localhost;Database=exceldata;User ID=root;Password=admin;"; // SQL-запрос для получения данных string query = "SELECT * FROM excel_table"; // Создайте соединение с базой данных MySQL using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); MySqlCommand cmd = new MySqlCommand(query, conn); MySqlDataAdapter adapter = new MySqlDataAdapter(cmd); DataTable dataTable = new DataTable(); // Заполните DataTable результатами запроса adapter.Fill(dataTable); // Укажите тип лицензии как Некоммерческая ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // Создайте новый пакет Excel для работы с файлами Excel using (ExcelPackage excelPackage = new ExcelPackage()) { // Добавьте новый рабочий лист в пакет Excel var worksheet = excelPackage.Workbook.Worksheets.Add("Sheet1"); // Загрузите DataTable в рабочий лист Excel worksheet.Cells["A1"].LoadFromDataTable(dataTable, true); // Сохраните файл Excel excelPackage.SaveAs(new FileInfo("ExportedData.xlsx")); } } } } }
Экспорт данных в Excel с помощью NPOI
NPOI — это библиотека .NET с открытым исходным кодом для чтения и записи документов Microsoft Office, включая файлы Excel, Word и PowerPoint. Библиотека поддерживает широкий спектр функций, включая импорт и экспорт данных, форматирование ячеек, формулы, диаграммы и поворотные таблицы, что делает ее подходящей как для простых, так и для сложных операций с Excel.
-
Установите необходимые библиотеки:
Install-Package NPOI Install-Package MySql.Data
-
Напишите код:
using MySql.Data.MySqlClient; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System.Data; namespace ExportDataToExcelUsingNPOI { class Program { static void Main(string[] args) { // Строка подключения к базе данных MySQL string connectionString = "Server=localhost;Database=exceldata;User ID=root;Password=admin;"; // SQL-запрос для получения данных string query = "SELECT * FROM excel_table"; // Создайте соединение с базой данных MySQL using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); MySqlCommand cmd = new MySqlCommand(query, conn); MySqlDataAdapter adapter = new MySqlDataAdapter(cmd); DataTable dataTable = new DataTable(); // Заполните DataTable данными из базы данных adapter.Fill(dataTable); // Создайте новую книгу Excel IWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet("Sheet1"); // Создайте строку заголовка IRow headerRow = sheet.CreateRow(0); for (int i = 0; i < dataTable.Columns.Count; i++) { // Установите имена столбцов headerRow.CreateCell(i).SetCellValue(dataTable.Columns[i].ColumnName); } // Заполните лист данными из DataTable for (int i = 0; i < dataTable.Rows.Count; i++) { // Создайте новую строку IRow row = sheet.CreateRow(i + 1); for (int j = 0; j < dataTable.Columns.Count; j++) { // Установите значение ячейки row.CreateCell(j).SetCellValue(dataTable.Rows[i][j].ToString()); } } // Сохраните файл Excel using (var fileData = new FileStream("ExportedData.xlsx", FileMode.Create)) { // Запишите книгу в файл workbook.Write(fileData); } } } } }
Экспорт данных в Excel с помощью ClosedXML
ClosedXML — это библиотека .NET, которая упрощает создание и работу с файлами Excel в формате OpenXML (.xlsx). Это библиотека с открытым исходным кодом и свободна для использования в соответствии с лицензией MIT. Это означает, что вы можете использовать ее как в личных, так и в коммерческих проектах без каких-либо лицензионных отчислений или ограничений.
-
Установите необходимые библиотеки:
Install-Package ClosedXML Install-Package MySql.Data
-
Напишите код:
using System; using System.Data; using MySql.Data.MySqlClient; using ClosedXML.Excel; namespace ExportDataToExcelUsingClosedXML { class Program { static void Main(string[] args) { // Строка подключения к базе данных MySQL string connectionString = "Server=localhost;Database=exceldata;User ID=root;Password=admin;"; // SQL-запрос для получения данных string query = "SELECT * FROM excel_table"; // Создайте соединение с базой данных MySQL using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); MySqlCommand cmd = new MySqlCommand(query, conn); MySqlDataAdapter adapter = new MySqlDataAdapter(cmd); DataTable dataTable = new DataTable(); // Заполните DataTable данными из базы данных adapter.Fill(dataTable); // Создайте новую книгу Excel using (var workbook = new XLWorkbook()) { // Добавьте новый рабочий лист в книгу var worksheet = workbook.Worksheets.Add("Sheet1"); // Вставьте DataTable в рабочий лист, начиная с ячейки A1 worksheet.Cell(1, 1).InsertTable(dataTable, false); // Сохраните файл Excel workbook.SaveAs("ExportedData.xlsx"); } } } } }
Экспорт данных в Excel с помощью Free Spire.XLS for .NET
Free Spire.XLS for .NET — это универсальная библиотека, позволяющая разработчикам создавать, читать и изменять файлы Excel в форматах .xlsx и .xls. Благодаря простому API она поддерживает такие функции, как форматирование данных, вычисление формул и создание диаграмм.
Эта библиотека идеально подходит для автоматизации операций с Excel в приложениях .NET без необходимости использования Microsoft Office, предлагая бесплатную версию с необходимыми возможностями для различных задач разработки.
-
Установите необходимые библиотеки:
Install-Package FreeSpire.XLS Install-Package MySql.Data
-
Напишите код:
using Spire.Xls; using System.Data; using MySql.Data.MySqlClient; namespace ExportDataToExcelUsingSpireXLS { class Program { static void Main(string[] args) { // Строка подключения к базе данных MySQL string connectionString = "Server=localhost;Database=exceldata;User ID=root;Password=admin;"; // SQL-запрос для получения данных string query = "SELECT * FROM excel_table"; // Создайте новую книгу Excel Workbook workbook = new Workbook(); // Получите первый рабочий лист Worksheet worksheet = workbook.Worksheets[0]; // Создайте соединение с базой данных MySQL using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); MySqlCommand cmd = new MySqlCommand(query, conn); MySqlDataAdapter adapter = new MySqlDataAdapter(cmd); DataTable dataTable = new DataTable(); // Заполните DataTable результатами запроса adapter.Fill(dataTable); // Вставьте DataTable в рабочий лист worksheet.InsertDataTable(dataTable, true, 1, 1); } // Сохраните книгу в файл workbook.SaveToFile("ImportedData.xlsx", ExcelVersion.Version2010); } } }
Сравнение библиотек C# Excel
Эта статья посвящена базовой функциональности библиотеки C# Excel, а именно записи данных на рабочий лист. В ней не рассматриваются более продвинутые возможности, такие как применение условного форматирования, фильтрация данных или создание поворотных таблиц для анализа данных. Я широко использовал эти библиотеки и привожу следующие сравнения, основанные на моем опыте.
Вот сравнение Microsoft.Office.Interop.Excel, EPPlus, NPOI, ClosedXML и Free Spire.XLS для .NET по цене, производительности, простоте использования, возможностям и наилучшим вариантам применения:
Заключение
В этой статье блога рассмотрены пять различных методов экспорта данных из базы данных в Excel с помощью различных библиотек C# Excel. У каждой библиотеки есть свои сильные стороны и возможности. Вы можете выбрать ту, которая соответствует конкретным требованиям вашего проекта.
ссылка на оригинал статьи https://habr.com/ru/articles/850368/
Добавить комментарий