public class ExcelBase { public List<TModel> ImportData<TModel>(Stream stream, string templatePath,string fileName, int begin = 2) where TModel : class, new() { IWorkbook workbook = null; if(fileName.ToLower().EndsWith(".xlsx")) workbook= new XSSFWorkbook(stream); else workbook = new HSSFWorkbook(stream); ISheet sheet = workbook.GetSheetAt(0); List<TModel> lst = new List<TModel>(); int rowNum = sheet.LastRowNum; bool flag = true; for (int i = begin; i <= rowNum; i++)//第一行为标题,第二行为列名,不进行取数据 { flag = true; TModel model = ExcelUtil.CreateFromExcel<TModel>(templatePath, (column, symbol) =>//symbol:2日期时间格式 { try { object value = null; ICell cell = sheet.GetRow(i).GetCell(column); if (cell != null) { if (symbol == 2)//日期时间格式 { if (cell.CellType == CellType.Blank) return null; DateTime time; if (cell.CellType == CellType.Numeric) { if (DateUtil.IsValidExcelDate(cell.NumericCellValue)) { time = cell.DateCellValue; } else { time = DateUtil.GetJavaDate(cell.NumericCellValue); } } else if (cell.CellType == CellType.String) { time = DateTime.Parse(cell.StringCellValue); } else if (cell.CellType == CellType.Formula) { time = DateTime.Parse(cell.NumericCellValue.ToString()); } else { time = DateTime.Parse(cell.ToString()); } return time; } else { switch (cell.CellType) { case CellType.Boolean: { value = cell.BooleanCellValue; break; } case CellType.Numeric: { DecimalFormat df = new DecimalFormat("#.#####"); System.Globalization.CultureInfo cf = new System.Globalization.CultureInfo("ZH-CN", true); value = df.Format(cell.NumericCellValue, cf); //value = cell.NumericCellValue; break; } case CellType.String: { value = cell.StringCellValue ?? string.Empty; break; } case CellType.Formula: { value = cell.NumericCellValue.ToString() ?? string.Empty; break; } default: { value = cell.ToString(); break; } } } } return value; } catch (Exception ex) { flag = false; return null; } }, rowNum); if (!flag) { //errorList.Add(model); } else if (model != null) { lst.Add(model); } else { continue; } } return lst; } }
NOPI导入XLS或XLSX文件
猜你喜欢
转载自blog.51cto.com/3002711/2670144
今日推荐
周排行