Категория

C# Сохранить файл Excel — Сохранить Excel в XLSX, PDF и другие форматы

2025-11-14 09:29:33 zaki zou

Руководство по сохранению файлов Excel с использованием кода C#

Сохранение файлов Excel в C# — это обычная задача во многих .NET-приложениях, особенно при создании отчетов, экспорте аналитических данных или автоматизации системных журналов. Независимо от того, работаете ли вы с финансовыми сводками или данными о ежедневных операциях, возможность программно создавать и сохранять файлы Excel может значительно повысить эффективность и точность.

В C# разработчики могут работать с файлами Excel несколькими способами: создавать новые книги, записывать данные и сохранять их в различных форматах, таких как XLSX, CSV или PDF. С помощью специализированных библиотек для Excel эти операции можно эффективно автоматизировать, не полагаясь на Microsoft Excel или ручное вмешательство.

В этой статье мы рассмотрим, как:


Подготовьте среду разработки

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

Шаг 1: Установите Spire.XLS через NuGet

Install-Package FreeSpire.XLS

Шаг 2: Импортируйте необходимое пространство имен

using Spire.Xls;

Шаг 3: Создайте, запишите и сохраните простой файл Excel

// Создать новую книгу и получить первый лист
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];

// Записать "Hello World!" в ячейку A1
sheet.Range["A1"].Text = "Hello World!";

// Сохранить книгу в файл
workbook.SaveToFile("HelloWorld.xlsx", ExcelVersion.Version2016);

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

После этого вы можете изучить ключевые классы и методы, такие как:

  • Workbook – представляет весь файл Excel.
  • Worksheet – представляет один лист в книге.
  • Range – позволяет получать доступ к определенным ячейкам для ввода, форматирования или стилизации.
  • Workbook.SaveToFile() – сохраняет книгу на диск в указанном формате Excel.

Сохранение данных в файл Excel на C#

Сохранение структурированных данных, таких как DataTable или DataGridView, в файл Excel — одна из самых практичных задач в разработке на C#. Независимо от того, создает ли ваше приложение результаты базы данных, содержимое сетки пользовательского интерфейса или автоматизированные отчеты, экспорт этих наборов данных в Excel обеспечивает лучшую читаемость и совместимость.

Пример 1: Сохранение DataTable в Excel

using Spire.Xls;
using System.Data;

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "EmployeeData";

DataTable table = new DataTable();
table.Columns.Add("EmployeeID");
table.Columns.Add("FullName");
table.Columns.Add("Department");
table.Columns.Add("HireDate");
table.Columns.Add("Salary");

// Add sample rows
table.Rows.Add("E001", "Alice Johnson", "Finance", "2020-03-12", "7500");
table.Rows.Add("E002", "Bob Williams", "Human Resources", "2019-08-05", "6800");
table.Rows.Add("E003", "Catherine Lee", "IT", "2021-01-20", "8200");
table.Rows.Add("E004", "David Smith", "Marketing", "2018-11-30", "7100");
table.Rows.Add("E005", "Emily Davis", "Sales", "2022-06-15", "6900");

// Вставить DataTable в лист
sheet.InsertDataTable(table, true, 1, 1);

// Применить встроенные форматы
sheet.AllocatedRange.Rows[0].BuiltInStyle = BuiltInStyles.Heading1;
for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
{
    sheet.AllocatedRange.Rows[i].BuiltInStyle = BuiltInStyles.Accent1;
}
sheet.AllocatedRange.AutoFitColumns();
sheet.AllocatedRange.AutoFitRows();

// Сохранить в Excel
workbook.SaveToFile("EmployeeDataExport.xlsx", FileFormat.Version2016);

Как это работает:

  • InsertDataTable() вставляет данные, начиная с определенной ячейки.
  • Аргумент true включает заголовки столбцов.
  • SaveToFile() сохраняет книгу на диск; второй параметр указывает версию формата Excel.
  • FileFormat.Version2016 указывает версию формата Excel.

Ниже приведен пример вывода, показывающий, как экспортированный DataTable выглядит в Excel:

Результат сохранения DataTable в Excel с использованием C#


Пример 2: Сохранение DataGridView в Excel

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];

sheet.InsertDataTable(((DataTable)dataGridView1.DataSource), true, 1, 1);
workbook.SaveToFile("GridViewExport.xlsx", FileFormat.Version2016);

Совет: Перед сохранением убедитесь, что источник данных вашего DataGridView правильно приведен к DataTable. Это гарантирует, что экспортированная структура будет соответствовать макету сетки пользовательского интерфейса.

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


Сохранение файла Excel в формате CSV или XLS на C#

Различные системы и платформы требуют разных форматов электронных таблиц. Хотя XLSX сейчас является стандартом, CSV, XLS и другие форматы остаются распространенными в корпоративных средах. Экспорт в различные форматы позволяет обмениваться данными Excel, обрабатывать их или импортировать в различные приложения.

Пример 1: Сохранение Excel в формате CSV

CSV (значения, разделенные запятыми) — это простой текстовый формат, идеально подходящий для обмена данными с базами данных, веб-приложениями или другими системами, поддерживающими обычные текстовые файлы.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("Report.csv", ",", FileFormat.CSV);

Пример 2: Сохранение Excel в формате XLS (устаревший формат)

XLS (формат Excel 97–2003) — это устаревший двоичный формат, который до сих пор используется в старых системах или приложениях, не поддерживающих XLSX. Сохранение в XLS обеспечивает совместимость с устаревшими корпоративными рабочими процессами.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("Report_legacy.xls", ExcelVersion.Version97to2003);

Дополнительные поддерживаемые форматы электронных таблиц

В дополнение к часто используемым форматам CSV, XLS и XLSX, библиотека также поддерживает несколько других форматов электронных таблиц и шаблонов. В таблице ниже перечислены эти форматы вместе с соответствующими им значениями перечисления FileFormat для удобства при программном сохранении файлов.

Формат Описание Соответствующий Enum (FileFormat)
ODS Электронная таблица OpenDocument FileFormat.ODS
XLSM Книга Excel с поддержкой макросов FileFormat.Xlsm
XLSB Двоичная книга Excel FileFormat.Xlsb2007 / FileFormat.Xlsb2010
XLT Шаблон Excel 97–2003 FileFormat.XLT
XLTX Шаблон Excel Open XML FileFormat.XLTX
XLTM Шаблон Excel с поддержкой макросов FileFormat.XLTM

Эти дополнительные форматы полезны для организаций, которые работают с устаревшими системами, стандартами открытых документов или рабочими процессами автоматизации на основе макросов/шаблонов.


Сохранение Excel в формате PDF или HTML на C#

Во многих случаях файлы Excel необходимо преобразовывать в форматы документов или веб-форматы для упрощения публикации, печати или обмена.
Экспорт в PDF идеально подходит для отчетов с фиксированным макетом и печати, в то время как HTML подходит для просмотра данных Excel в веб-браузере.

Пример 1: Сохранение Excel в формате PDF

В следующем примере показано, как сохранить книгу Excel в виде файла PDF с помощью C#. Это полезно для создания отчетов, сохраняющих макет и форматирование.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("EmployeeDataExport.pdf", FileFormat.PDF);

Вот пример сгенерированного PDF-файла после экспорта из Excel:

Результат сохранения Excel в PDF с использованием C#


Пример 2: Сохранение Excel в формате HTML

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

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("EmployeeDataExport.html", FileFormat.HTML);

Ниже приведен предварительный просмотр экспортированного HTML-файла, отображенного в браузере:

Результат сохранения Excel в HTML с использованием C#


Дополнительные поддерживаемые форматы документов и веб-форматы

Помимо PDF и HTML, библиотека поддерживает несколько других форматов, удобных для документов и веба. В таблице ниже показаны эти форматы вместе с их значениями перечисления FileFormat для удобства.

Формат Описание Соответствующий Enum (FileFormat)
XML Данные Excel, экспортированные в формате XML FileFormat.XML
Растровое изображение / Изображение Экспорт Excel в растровое изображение или другие форматы изображений FileFormat.Bitmap
XPS Документ XML Paper Specification FileFormat.XPS
PostScript Документ PostScript FileFormat.PostScript
OFD Формат документа с фиксированным макетом Open Fixed-layout FileFormat.OFD
PCL Файл языка команд принтера FileFormat.PCL
Markdown Формат файла Markdown FileFormat.Markdown

Эти форматы обеспечивают дополнительную гибкость для распространения содержимого Excel на различных платформах и в рабочих процессах, будь то для печати, веб-публикации или автоматизации.


Сохранение файла Excel в MemoryStream на C#

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

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Range["A1"].Text = "Export to Stream";

using (MemoryStream stream = new MemoryStream())
{
    workbook.SaveToStream(stream, ExcelVersion.Version2016);
    byte[] bytes = stream.ToArray();

    // Пример: отправить байты клиенту для загрузки в ASP.NET
    // Response.BinaryWrite(bytes);
}

Этот подход особенно полезен для ASP.NET, Web API или облачных сервисов, где вы хотите динамически обслуживать файлы Excel, не создавая временных файлов на сервере.


Открытие и повторное сохранение файлов Excel на C#

Во многих приложениях вам может понадобиться загрузить существующую книгу Excel, применить обновления или изменения, а затем сохранить ее обратно на диск или преобразовать в другой формат. Это часто встречается при обновлении отчетов, изменении экспортированных данных или автоматизации рабочих процессов с файлами Excel.

Пример: открытие и обновление файла Excel

Следующий код C# загружает предыдущую книгу, обновляет первую ячейку и сохраняет изменения:

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");

Worksheet sheet = workbook.Worksheets[0];
sheet.Range["A1"].Text = "Updated Content"; // Обновить значение ячейки
sheet.Range["A1"].AutoFitColumns(); // Автоподбор ширины столбца

// Сохранить обновленную книгу
workbook.Save(); // Сохраняет в исходный файл
workbook.SaveToFile("UpdatedCopy.xlsx", ExcelVersion.Version2016); // Сохранить как новый файл

На скриншоте ниже показан обновленный лист Excel после изменения и сохранения файла:

Результат обновления файла Excel с использованием C#

Вы также можете ознакомиться с подробным руководством по редактированию файлов Excel с использованием C# для более сложных сценариев.


Лучшие практики при сохранении файлов Excel

  1. Избегайте перезаписи файлов

    Проверяйте, существует ли целевой файл, перед сохранением, чтобы предотвратить случайную потерю данных.

  2. Правильно управляйте разрешениями и путями

    Убедитесь, что у вашего приложения есть права на запись в целевую папку, особенно в веб- или облачных средах.

  3. Выберите правильный формат

    Используйте XLSX для современной совместимости, CSV для обмена данными и PDF для печати или обмена отчетами.


Заключение

Сохранение файлов Excel в C# охватывает широкий спектр операций — от записи структурированных наборов данных, экспорта в различные форматы электронных таблиц, преобразования в PDF/HTML до обработки файловых потоков в веб-приложениях.

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


Часто задаваемые вопросы

В1: Как сохранить файл Excel на C#?

Используйте SaveToFile() с соответствующим ExcelVersion или FileFormat:

workbook.SaveToFile("Report.xlsx", ExcelVersion.Version2016);

В2: Как открыть и изменить существующий файл Excel?

Загрузите книгу с помощью LoadFromFile(), внесите изменения, затем сохраните:

Workbook workbook = new Workbook();
workbook.LoadFromFile("ExistingFile.xlsx");
workbook.Worksheets[0].Range["A1"].Text = "Updated Content";
workbook.SaveToFile("UpdatedFile.xlsx", ExcelVersion.Version2016);

В3: Как сохранить в формате CSV или PDF?

Укажите желаемый FileFormat в SaveToFile():

workbook.SaveToFile("Report.csv", ",", FileFormat.CSV);
workbook.SaveToFile("Report.pdf", FileFormat.PDF);

В4: Могу ли я сохранить Excel в память, а не на диск?

Да. Используйте SaveToStream() для вывода в MemoryStream, что полезно в веб- или облачных приложениях:

using (MemoryStream stream = new MemoryStream())
{
    workbook.SaveToStream(stream, ExcelVersion.Version2016);
    byte[] bytes = stream.ToArray();
}

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