![](https://habrastorage.org/getpro/habr/upload_files/32d/8b1/d3d/32d8b1d3db0c98c3096aef7c0188d9a9.png)
Что такое 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/
Добавить комментарий