예제 #1
0
        private void ReadWaterYearsFromExcel(DateTime t1, DateTime t2)
        {
            if (idxDate < 0 || idxValue < 0)
            {
                return;
            }
            errorCount = 0;
            IRange  rng    = worksheet.UsedRange.Range;
            IValues values = (IValues)worksheet;

            for (int i = beginningRowIndex; i < rng.RowCount; i++)
            {
                if (values[i, idxDate] == null || values[i, idxValue] == null)
                {
                    errorCount++;
                    if (errorCount > 100)
                    {
                        Logger.WriteLine("date or value is null ;skipping row at index = " + i);
                    }

                    continue;
                }
                double dyear = -1;
                if (!SpreadsheetGearExcel.TryReadingValue(values[i, idxDate], out dyear))
                {
                    errorCount++;
                    if (errorCount > 100)
                    {
                        Logger.WriteLine("error reading water year");
                    }
                    continue;
                }
                int wy = Convert.ToInt32(dyear);

                for (int monthIndex = idxValue; monthIndex < idxValue + 12; monthIndex++)
                {
                    DateTime t = GetDate(wy, monthIndex, idxValue);

                    if (values[i, monthIndex] == null)
                    {
                        AddMissing(t);
                    }
                    else
                    {
                        double d;
                        if (!SpreadsheetGearExcel.TryReadingValue(values[i, monthIndex], out d))
                        {
                            errorCount++;

                            Logger.WriteLine("error reading value");
                            throw new InvalidCastException("Could not read value");
                        }
                        Add(t, d);
                    }
                }
            }
            if (errorCount > 100)
            {
                Logger.WriteLine("Skipped " + (errorCount - 100) + " messages");
            }
        }
예제 #2
0
        private void ReadFromExcel(DateTime t1, DateTime t2)
        {
            errorCount = 0;
            if (idxDate < 0 || idxValue < 0)
            {
                return;
            }
            IRange  rng    = worksheet.UsedRange.Range;
            IValues values = (IValues)worksheet;

            for (int i = beginningRowIndex; i < rng.RowCount; i++)
            {
                //Console.WriteLine("row index "+i);
                if (idxSiteColumn >= 0)
                {// filtering enabled.
                    var v = values[i, idxSiteColumn];
                    if (v == null)
                    {
                        continue;
                    }

                    if (v.Type == SpreadsheetGear.Advanced.Cells.ValueType.Number)
                    {
                        if (v.Number.ToString() != siteFilter)
                        {
                            continue;
                        }
                    }
                    if (v.Type == SpreadsheetGear.Advanced.Cells.ValueType.Text)
                    {
                        if (v.Text != siteFilter)
                        {
                            continue;
                        }
                    }
                }


                if (values[i, idxDate] == null)
                {
                    errorCount++;
                    if (errorCount > 100)
                    {
                        continue;
                    }
                    Logger.WriteLine("date is null ;skipping row at index = " + i);
                    continue;
                }

                DateTime t;
                if (!SpreadsheetGearExcel.TryReadingDate(workbook, values[i, idxDate], out t))
                {
                    errorCount++;
                    if (errorCount > 100)
                    {
                        continue;
                    }
                    Logger.WriteLine(filename + ": can't read date; row at index = " + i);
                    continue;
                }

                double d = Point.MissingValueFlag;

                if (values[i, idxValue] != null &&
                    !SpreadsheetGearExcel.TryReadingValue(values[i, idxValue], out d))
                {
                    errorCount++;
                    if (errorCount < 100)
                    {
                        Logger.WriteLine(filename + ": can't read value ; row at index = " + i);
                    }
                    d = Point.MissingValueFlag;

                    //continue;
                }
                if (double.IsNaN(d))
                {
                    d = Point.MissingValueFlag;
                }

                int idxTime = this.IndexOf(t);

                if (idxTime >= 0)
                {
                    errorCount++;
                    if (errorCount > 100)
                    {
                        continue;
                    }
                    string msg = "duplicate date found in row " + i + " date = '" + t.ToString() + "' value =" + d;
                    Logger.WriteLine(msg);
                    Messages.Add(msg);
                    msg = "previously imported value = " + this[idxTime].Value;
                    Logger.WriteLine(msg);
                    Messages.Add(msg);
                }
                else if (t >= t1 && t <= t2)
                {
                    Add(t, d);
                }
            }

            if (errorCount > 100)
            {
                Logger.WriteLine("Skipped " + (errorCount - 100) + " messages");
            }
        }