NOPI导入XLS或XLSX文件
16lz
2021-03-24
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; } }
更多相关文章
- 京东技术:用最小的图片格式,打造最优的用户体验
- class 运算符重载
- mysql数据查询关于字段为100000-130000-130400-130426的数据格式
- 第一课 vscode软件和常用插件的下载安装及MarkDown常用语法的使
- 驱动器中的磁盘未被格式化. 不知道怎样寻回呢
- 我的开源项目——Windows PE和Linux ELF可执行文件解析工具
- iMove 如何输出影片、mp4 档案格式及调整画质?
- 计算折旧月数,实用才是硬道理
- 闪存插入时显示提示格式化请问咋才能修复??