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

@Tproger

Что такое NPOI?

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

Например,
вы можете использовать его для:

  1. создания отчета Excel без установленного на сервере пакета Microsoft Office и более эффективной работы, чем вызов компонента Microsoft Excel ActiveX в фоновом режиме;
  2. извлечения текста из документов Office для реализации функции полнотекстового индексирования;
  3. извлечения текста и изображений из документов Excel, Word и PowerPoint;
  4. создания листов Excel, содержащих формулы.

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

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

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);

Следите за новыми постами по любимым темам

Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.

    Данные о правообладателе фото и видеоматериалов взяты с сайта «Tproger», подробнее в Условиях использования
    Анализ
    ×
    Microsoft
    Сфера деятельности:Связь и ИТ
    154