Esempio n. 1
0
 /// <summary>
 /// 处理
 /// </summary>
 /// <param name="pSource">数据源(数据源可能会多种多样.它可能是一个文件名、可能是一个工作表对象、可能是一个工作簿)</param>
 /// <param name="pResult">导入结果</param>
 /// <returns>是否成功</returns>
 public abstract bool Process(object pSource, out ImportingResult pResult);
Esempio n. 2
0
        /// <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);
        }