Ejemplo n.º 1
0
        public void Read()
        {
            _salesDetails.Clear();
            _salesDetails = new List<SalesOrderDetail>(122000);

            var watch = new Stopwatch();
            watch.Start();

            for (var i = 1; i <= Globals.Sheet1.tblSalesOrderDetails.ListRows.Count; i++)
            {
                var salesDetail = new SalesOrderDetail();

                salesDetail.SalesOrderID = (int)Globals.Sheet1.tblSalesOrderDetails.ListRows[i].Range[1, 1].Value2;
                salesDetail.SalesOrderDetailID = (int)Globals.Sheet1.tblSalesOrderDetails.ListRows[i].Range[1, 2].Value2;
                salesDetail.CarrierTrackingNumber = Globals.Sheet1.tblSalesOrderDetails.ListRows[i].Range[1, 3].Value2;
                salesDetail.OrderQty = (int)Globals.Sheet1.tblSalesOrderDetails.ListRows[i].Range[1, 4].Value2;
                salesDetail.ProductID = (int)Globals.Sheet1.tblSalesOrderDetails.ListRows[i].Range[1, 5].Value2;
                salesDetail.SpecialOfferID = (int)Globals.Sheet1.tblSalesOrderDetails.ListRows[i].Range[1, 6].Value2;
                salesDetail.UnitPrice = (double)Globals.Sheet1.tblSalesOrderDetails.ListRows[i].Range[1, 7].Value2;
                salesDetail.UnitPriceDiscount = (double)Globals.Sheet1.tblSalesOrderDetails.ListRows[i].Range[1, 8].Value2;
                salesDetail.LineTotal = (double)Globals.Sheet1.tblSalesOrderDetails.ListRows[i].Range[1, 9].Value2;
                salesDetail.ModifiedDate = DateTime.FromOADate(Globals.Sheet1.tblSalesOrderDetails.ListRows[i].Range[1, 10].Value2);

                _salesDetails.Add(salesDetail);
            }

            watch.Stop();
            //about 220 secs
            MessageBox.Show("Elapsed time in sec: " + watch.Elapsed.TotalSeconds);
        }
Ejemplo n.º 2
0
        public void FailedReadMethod()
        {
            _salesDetails.Clear();
            _salesDetails = new List<SalesOrderDetail>(122000);

            var watch = new Stopwatch();
            watch.Start();

            foreach (ListRow listRow in Globals.Sheet1.tblSalesOrderDetails.ListRows)
            {
                var salesDetail = new SalesOrderDetail();

                salesDetail.SalesOrderID = (int)listRow.Range[1, 1].Value2;
                //read other properties...
            }

            watch.Stop();
            //about 220 secs
            MessageBox.Show("Elapsed time in sec: " + watch.Elapsed.TotalSeconds);
        }
Ejemplo n.º 3
0
        public void ReadFaster()
        {
            _salesDetails.Clear();
            _salesDetails = new List<SalesOrderDetail>(122000);

            var sb = new StringBuilder();

            var watch = new Stopwatch();
            watch.Start();

            Globals.ThisWorkbook.ThisApplication.EnableEvents = false;

            object[,] rawData = Globals.Sheet1.tblSalesOrderDetails.Range.Value2;

            watch.Stop();

            //about 13 secs
            sb.AppendLine("Elapsed Time (getting data from Excel) in sec: " + watch.Elapsed.TotalSeconds);

            watch.Restart();

            for (var row = 2; row <= rawData.GetLength(0); row++)
            {
                var salesDetail = new SalesOrderDetail();

                salesDetail.SalesOrderID = Convert.ToInt32(rawData[row, 1]);
                salesDetail.SalesOrderDetailID =  Convert.ToInt32(rawData[row, 2]);
                salesDetail.CarrierTrackingNumber =  Convert.ToString(rawData[row, 3]);
                salesDetail.OrderQty = Convert.ToInt32(rawData[row, 4]);
                salesDetail.ProductID = Convert.ToInt32(rawData[row, 5]);
                salesDetail.SpecialOfferID = Convert.ToInt32(rawData[row, 6]);
                salesDetail.UnitPrice = Convert.ToDouble(rawData[row, 7]);
                salesDetail.UnitPriceDiscount = Convert.ToDouble(rawData[row, 8]);
                salesDetail.LineTotal = Convert.ToDouble(rawData[row, 9]);
                salesDetail.ModifiedDate = DateTime.FromOADate((double)rawData[row, 10]);

                _salesDetails.Add(salesDetail);
            }

            watch.Stop();

            //milliseconds only.
            sb.AppendLine("Elapsed Time (processing data inside .NET) in sec: " + watch.Elapsed.TotalSeconds);

            Globals.ThisWorkbook.ThisApplication.EnableEvents = true;

            MessageBox.Show(sb.ToString());
        }