Использование C# и NPOI для работы с файлами Excel

от автора

Что такое NPOI?

NPOI — это .NET-версия проекта POI на Java, расположенного по адресу http://poi.apache.org/. POI является проектом с открытым исходным кодом, который может помочь вам читать/записывать файлы xls(x), doc(x), ppt(x). Он имеет широкое применение.
Например, вы можете использовать его для:

  • создания отчета Excel без установленного на сервере пакета Microsoft Office и более эффективной работы, чем вызов компонента Microsoft Excel ActiveX в фоновом режиме;

  • извлечения текста и изображений из документов Excel, Word и PowerPoint;

  • создания листов Excel, содержащих формулы.

В этой статье я собираюсь познакомить вас с тем, как создавать, читать и обновлять файлы .XLSX с использованием NPOI на языке C#.

Установка NOPI через NuGet

PM>Install-Package NPOI

Использование пространства имен NPOI

using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using NPOI.SS.Util; using NPOI.HSSF.Util;

Пример 1. Создание нового документа Excel и добавление данных

// Создание новой рабочей книги IWorkbook workbook = new XSSFWorkbook();  // Создание нового листа ISheet sheet = workbook.CreateSheet("Sheet1");  // Добавление данных в ячейки IRow row = sheet.CreateRow(0); row.CreateCell(0).SetCellValue("Привет"); row.CreateCell(1).SetCellValue("Мир");  // Сохранение документа Excel using (FileStream fileStream = new FileStream("path/file.xlsx", FileMode.Create)) {     workbook.Write(fileStream, false); }

Пример 2. Чтение данных из существующего документа Excel

// Открытие существующей рабочей книги IWorkbook workbook; using (FileStream fileStream = new FileStream("path/file.xlsx", FileMode.Open, FileAccess.Read)) {     workbook = new XSSFWorkbook(fileStream); }  // Получение листа ISheet sheet = workbook.GetSheetAt(0);  // Чтение данных из ячейки IRow row = sheet.GetRow(0); string cellValue = row.GetCell(0).StringCellValue;  // Вывод данных ячейки Console.WriteLine(cellValue);

Пример 3. Обновление данных в документе Excel

// Открытие существующей рабочей книги IWorkbook workbook; using (FileStream fileStream = new FileStream("path/file.xlsx", FileMode.Open, FileAccess.ReadWrite)) {     workbook = new XSSFWorkbook(fileStream); }  // Получение листа ISheet sheet = workbook.GetSheetAt(0);  // Обновление данных ячейки IRow row = sheet.GetRow(0); row.GetCell(0).SetCellValue("Обновленное значение");  // Сохранение документа Excel using (FileStream fileStream = new FileStream("path/file.xlsx", FileMode.Create)) {     workbook.Write(fileStream, false); }

Дополнительные настройки

Объединение ячеек:

// Параметры CellRangeAddress: начальная строка, конечная строка, начальный столбец, конечный столбец sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 0));

Настройка выравнивания:

// Создание объекта стиля ICellStyle cellStyle = workbook.CreateCellStyle(); // Настройка горизонтального выравнивания cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; // Настройка вертикального выравнивания cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; // Настройка отступа cellStyle.Indention = 3; // Автоматический перенос текста cellStyle.WrapText = true; // Уменьшение размера шрифта для заполнения ячейки cellStyle.ShrinkToFit = true; // Вращение текста cellStyle.Rotation = 90; // Применение стиля sheet.GetRow(0).GetCell(0).CellStyle = cellStyle;

Настройка шрифта:

// Создание объекта шрифта IFont font = workbook.CreateFont(); // Настройка шрифта font.FontName = "Times New Roman"; // Жирный шрифт font.IsBold = true; // Курсивный шрифт font.IsItalic = true; // Размер шрифта font.FontHeightInPoints = 14; // Подчеркнутый шрифт font.Underline = FontUnderlineType.Single; // Цвет шрифта font.Color = HSSFColor.Black.Index; // Зачеркнутый шрифт font.IsStrikeout = true; // Верхний индекс //font.TypeOffset = FontSuperScript.Super; // Нижний индекс //font.TypeOffset = FontSuperScript.Sub; // Создание объекта стиля ICellStyle cellStyle = workbook.CreateCellStyle(); cellStyle.SetFont(font); // Применение стиля sheet.GetRow(0).GetCell(0).CellStyle = cellStyle;

Настройка цвета заливки ячейки:

// Создание объекта стиля ICellStyle cellStyle = workbook.CreateCellStyle(); // Настройка цвета cellStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Pink.Index; cellStyle.FillPattern = FillPattern.SolidForeground; // Применение стиля sheet.GetRow(0).GetCell(0).CellStyle = cellStyle;

Настройка высоты строки и ширины столбца:

// Высота строки row.Height = 25 * 20; // Ширина столбца sheet.SetColumnWidth(0, 18 * 256);


ссылка на оригинал статьи https://habr.com/ru/articles/745696/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *