Beispiel #1
0
        public IList <CheckingDataInfo> GetCheckingData(SheetType sType, string strFilePath, params string[] columns)
        {
            if (columns.Length < 1)
            {
                throw new ApplicationException("列参数不能为个数为0");
            }
            IList <CheckingDataInfo> dataList = new List <CheckingDataInfo>();

            using (OleDbDataReader rdr = ExcelHelper.GetDataReader(sType, strFilePath))
            {
                try
                {
                    while (rdr.Read())
                    {
                        if (rdr[columns[0]] != DBNull.Value && rdr[columns[0]].ToString() != String.Empty)
                        {
                            var info = new CheckingDataInfo();
                            if (dataList.FirstOrDefault(d => d.ExpressNo == rdr[columns[0]].ToString()) == null)
                            {
                                try
                                {
                                    info.ExpressNo = rdr[columns[0]] == DBNull.Value
                                                         ? String.Empty
                                                         : rdr[columns[0]].ToString();
                                    int expresLength = info.ExpressNo.Length;
                                    if (info.ExpressNo != String.Empty && info.ExpressNo.IndexOf(ConstList.FILTER, StringComparison.Ordinal) == 0)
                                    {
                                        info.ExpressNo = info.ExpressNo.Substring(3, expresLength - 3);
                                    }
                                    info.Money = rdr[columns[1]] == DBNull.Value
                                                     ? String.Empty
                                                     : rdr[columns[1]].ToString();
                                }
                                catch (Exception ex)
                                {
                                    throw new ApplicationException(ex.Message + " 列名错误");
                                }
                                dataList.Add(info);
                            }
                            else
                            {
                                try
                                {
                                    info.ExpressNo = rdr[columns[0]] == DBNull.Value
                                                         ? String.Empty
                                                         : rdr[columns[0]].ToString();
                                    info.Money = rdr[columns[1]] == DBNull.Value
                                                     ? String.Empty
                                                     : rdr[columns[1]].ToString();
                                }
                                catch (Exception ex)
                                {
                                    throw new ApplicationException(ex.Message + " 列名错误");
                                }
                                info = dataList.FirstOrDefault(d => d.ExpressNo == rdr[columns[0]].ToString());
                                if (info != null)
                                {
                                    var newinfo = new CheckingDataInfo
                                    {
                                        ExpressNo = info.ExpressNo,
                                        Money     = (decimal.Parse(info.Money) +
                                                     decimal.Parse(rdr[columns[1]].ToString())).ToString(CultureInfo.InvariantCulture),
                                    };
                                    dataList.Remove(info);
                                    dataList.Add(newinfo);
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw new ApplicationException(ex.Message);
                }
                finally
                {
                    rdr.Close();
                }
            }
            return(dataList);
        }
Beispiel #2
0
        public IList <CheckingDataInfo> GetCheckingData(String sheetName, SheetType sType, string strFilePath, params string[] columns)
        {
            if (columns.Length < 1)
            {
                throw new ApplicationException("列参数不能为个数为0");
            }
            IList <CheckingDataInfo> dataList = new List <CheckingDataInfo>();

            try
            {
                using (OleDbDataReader rdr = ExcelHelper.GetDataReader(sType, strFilePath, sheetName))
                {
                    try
                    {
                        while (rdr.Read())
                        {
                            if (rdr[columns[0]] != DBNull.Value && rdr[columns[0]].ToString() != String.Empty)
                            {
                                var info = new CheckingDataInfo();
                                if (dataList.FirstOrDefault(d => d.ExpressNo == rdr[columns[0]].ToString()) == null)
                                {
                                    try
                                    {
                                        info.ExpressNo = rdr[columns[0]] == DBNull.Value
                                                             ? String.Empty
                                                             : rdr[columns[0]].ToString();
                                        info.Money = rdr[columns[1]] == DBNull.Value
                                                         ? String.Empty
                                                         : rdr[columns[1]].ToString();
                                    }
                                    catch (Exception ex)
                                    {
                                        throw new ApplicationException(ex.Message + " 列名错误");
                                    }
                                    dataList.Add(info);
                                }
                                else
                                {
                                    try
                                    {
                                        info.ExpressNo = rdr[columns[0]] == DBNull.Value
                                                             ? String.Empty
                                                             : rdr[columns[0]].ToString();
                                        info.Money = rdr[columns[1]] == DBNull.Value
                                                         ? String.Empty
                                                         : rdr[columns[1]].ToString();
                                    }
                                    catch (Exception ex)
                                    {
                                        throw new ApplicationException(ex.Message + " 列名错误");
                                    }
                                    info = dataList.FirstOrDefault(d => d.ExpressNo == rdr[columns[0]].ToString());
                                    if (info != null)
                                    {
                                        var newinfo = new CheckingDataInfo
                                        {
                                            ExpressNo = info.ExpressNo,
                                            Money     = (decimal.Parse(info.Money) +
                                                         decimal.Parse(rdr[columns[1]].ToString())).ToString(CultureInfo.InvariantCulture)
                                        };
                                        dataList.Remove(info);
                                        dataList.Add(newinfo);
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("处理异常", ex);
                    }
                    finally
                    {
                        rdr.Close();
                        rdr.Dispose();
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("处理异常", ex);
            }
            finally
            {
                GC.Collect();
            }
            return(dataList);
        }