/// <summary> /// 处理 /// </summary> /// <param name="pSource">数据源(数据源可能会多种多样.它可能是一个文件名、可能是一个工作表对象、可能是一个工作簿)</param> /// <param name="pResult">导入结果</param> /// <returns>是否成功</returns> public abstract bool Process(object pSource, out ImportingResult pResult);
/// <summary> /// 执行处理 /// </summary> /// <param name="pSource">数据源(数据源可能会多种多样.它可能是一个文件名、可能是一个工作表对象、可能是一个工作簿)</param> /// <param name="pResult">导入结果</param> /// <returns>是否成功</returns> public override bool Process(object pSource, out ImportingResult pResult) {//IETCLResultItem[] pResult if (pSource == null || (!(pSource is Worksheet))) { throw new ETCLException(100, "数据源为null或类型不为Aspose.Worksheet."); } Worksheet sheet = pSource as Worksheet; List <IETCLResultItem> opResult = new List <IETCLResultItem>(); IETCLResultItem[] tempResult; //实例化out参数 pResult = new ImportingResult(); //保存对当前的工作表的引用 this.CurrentWorkSheet = sheet; bool isPass = true; //解析出数据 DataTable dt = this.Extract(sheet, out tempResult); if (tempResult != null) { opResult.AddRange(tempResult); } if (dt != null && dt.Rows.Count > 0) { //数据转换 IETCLDataItem[] items = this.Transform(dt, out tempResult); if (tempResult != null) { opResult.AddRange(tempResult); } if (items == null || items.Length <= 0) { isPass = false; //没有数据 pResult.IsSuccess = false; pResult.IsExistsData = true; } else { pResult.IsExistsData = true; } if (tempResult != null) { opResult.AddRange(tempResult); } //检查数据 if (isPass) { isPass = this.Check(items, out tempResult); if (tempResult != null) { opResult.AddRange(tempResult); List <IETCLResultItem> results = new List <IETCLResultItem>(); if (pResult.CheckResults != null && pResult.CheckResults.Length > 0) { results.AddRange(pResult.CheckResults); } if (tempResult != null && tempResult.Length > 0) { results.AddRange(tempResult); } pResult.CheckResults = results.ToArray(); } } //写入数据库 if (isPass) { pResult.ImportedRowCount = this.Load(items, out tempResult, null); if (tempResult != null) { opResult.AddRange(tempResult); } } //错误信息回写到XLS文件 insertCheckResultIntoWorkSheet(sheet, opResult.ToArray()); if (isPass) { sheet.Cells.InsertRow(0); } //设置为导入成功 pResult.IsSuccess = isPass; } else { //没有数据 pResult.IsSuccess = true; pResult.IsExistsData = false; return(pResult.IsSuccess); } // return(pResult.IsSuccess); }