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


©著作权归作者所有:来自51CTO博客作者小斌哥哥哥的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

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

随机推荐

  1. xml字段含义
  2. Android(安卓)应用保存状态
  3. mk中的android:sharedUserId和LOCAL_CERT
  4. 在程序中设置android:gravity 和 android
  5. Android RelativeLayout属性
  6. Android 官方命令深入分析之android
  7. Android在走下坡路吗?
  8. Android音频开发(5):Mp3的录制 - 编译Lame源
  9. android高级应用课程
  10. android 文件读取