using NPOI.SS.UserModel; using System.Collections.Generic; namespace Infrastructure.Office { public static class NPOIExtensions { public static IEnumerable GetSheets(this IWorkbook wookbook) { for (int i = 0; i < wookbook.NumberOfSheets; i++) { yield return wookbook.GetSheetAt(i); } } public static IEnumerable GetRows(this ISheet sheet) { for (int i = 0; i < sheet.LastRowNum; i++) { yield return sheet.GetRow(i); } } public static IEnumerable GetCells(this IRow row) { for (int i = 0; i < row.LastCellNum; i++) { yield return row.GetCell(i); } } public static object GetValue(this ICell cell) { object result = null; switch (cell.CellType) { case CellType.Unknown: result = cell.ToString().Trim(); break; case CellType.Numeric: result = cell.NumericCellValue; break; case CellType.String: result = cell.StringCellValue.Trim(); break; case CellType.Formula: result = cell.CellFormula; break; case CellType.Blank: result = null; break; case CellType.Boolean: result = cell.BooleanCellValue; break; case CellType.Error: result = cell.ErrorCellValue; break; default: result = cell.ToString().Trim(); break; } return result; } } }