Beispiel #1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="excelWorkbook"></param>
        /// <param name="dataWorksheet"></param>
        /// <param name="logWorksheet"></param>
        /// <param name="bmStatus"></param>
        /// <returns></returns>
        private static bool UpdateExcelWithZeroData(Worksheet dataWorksheet, 
                                                    Worksheet logWorksheet, 
                                                    IBIGMatrixStatus bmStatus)
        {
            int numDays = GetNumberOfDays(1, bmStatus);
            int outputRowStart = 6;
            int outputRowEnd = (numDays*6) + 5;

            string xlFile = Globals.ThisWorkbook.FullName;
            for (int sr = 1; sr <= 12; ++sr)
            {

                int numDaysSR = GetNumberOfDays(sr, bmStatus);
                if (numDaysSR != numDays)
                {
                    bmStatus.log("Error: SR" + sr.ToString() + " num days=" + numDaysSR +
                                 " SR1 num days=" + numDays.ToString());
                    return false;
                }

                FileInfo fi = new FileInfo(xlFile);
                string inFile = xlFile.Replace(fi.Extension, "") + "_SR" + sr.ToString() + ".in";
                string outFile = xlFile.Replace(fi.Extension, "") + "_SR" + sr.ToString() + ".out";
                string logFile = xlFile.Replace(fi.Extension, "") + "_SR" + sr.ToString() + ".log";
                if (File.Exists(inFile)) File.Delete(inFile);
                if (File.Exists(outFile)) File.Delete(outFile);
                if (File.Exists(logFile)) File.Delete(logFile);
                string status = "Zeroing out data";
                string runTime = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();
                int outputCol = 6 + ((sr - 1) * 2);

                if( dataWorksheet != null ){
                    Microsoft.Office.Interop.Excel.Range range = dataWorksheet.get_Range(dataWorksheet.Cells[outputRowStart + 1, outputCol + 1], dataWorksheet.Cells[outputRowEnd + 1, outputCol + 1]);
                    range.Formula = "0";
                }
                if (logWorksheet != null)
                {
                    Microsoft.Office.Interop.Excel.Range range = logWorksheet.get_Range(logWorksheet.Cells[sr + 1, 5], logWorksheet.Cells[sr + 1, 5]);
                    range.Formula = status;
                    range = logWorksheet.get_Range(logWorksheet.Cells[sr + 1, 4], logWorksheet.Cells[sr + 1, 4]);
                    range.Formula = runTime;
                }
            }
            bmStatus.logInfo("zeroed out data for " + Globals.ThisWorkbook.Name + " num days=" +
                             numDays.ToString());
            GC.Collect();

            return true;
        }
Beispiel #2
0
        private static bool UpdateExcelWithSubreachData(Worksheet j349Worksheet,
                                                        Worksheet j349LogWorksheet,
                                                        int subreach, string inFile, 
                                                        string outFile, string status, 
                                                        float[] outDataoutData,int nDays,
                                                        IBIGMatrixStatus bmStatus)
        {
            string runTime = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();

            // data size 438
            int outputRowStart = 6;
            int outputRowEnd = nDays*6 + 5;
            int outputCol = 6 + ((subreach - 1) * 2);
            string[,] sValues = new string[nDays*6, 1];
            float[,] fValues = new float[nDays * 6, 1];

            int ri = 0;
            try
            {
                for (int r = outputRowStart; r <= outputRowEnd; ++r)
                {
                    ri = r - outputRowStart;
                    if (outDataoutData == null)
                    {
                        sValues[ri, 0] = "0";
                        fValues[ri, 0] = 0.0f;
                    }
                    else
                    {
                        sValues[ri, 0] = outDataoutData[ri].ToString();
                        fValues[ri, 0] = outDataoutData[ri];
                    }
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.ToString());
            }

            // Log info
            string[,] lsValues = new string[1, 4];
            FileInfo fi = new FileInfo(inFile);
            lsValues[0, 0] = fi.Name;
            fi = new FileInfo(outFile);
            lsValues[0, 1] = fi.Name; ;
            lsValues[0, 2] = runTime;
            lsValues[0, 3] = status;

            // extract range from j349Worksheet
            try
            {
                Microsoft.Office.Interop.Excel.Range range = j349Worksheet.get_Range(j349Worksheet.Cells[outputRowStart + 1, outputCol + 1], j349Worksheet.Cells[outputRowEnd + 1, outputCol + 1]);
                range.Value2 = fValues;
            }
            catch (Exception e)
            {
                bmStatus.log("Error: unable to update excel worksheet with results of SR" +
                                subreach.ToString());
                bmStatus.logInfo(e.ToString());
                return false;
            }

            // extract range from j349LogWorksheet
            try
            {
                Microsoft.Office.Interop.Excel.Range range = j349LogWorksheet.get_Range(j349LogWorksheet.Cells[subreach + 1, 2], j349LogWorksheet.Cells[subreach + 1, 5]);
                range.Value2 = lsValues;
            }
            catch (Exception e)
            {
                bmStatus.log("Error: unable to update excel worksheet with results of SR" +
                                subreach.ToString());
                bmStatus.logInfo(e.ToString());
                return false;
            }

            //GC.Collect();
            bmStatus.logInfo("SR" + subreach.ToString() + " updated " +
                                j349Worksheet.Name + " with model output.");

            return true;
        }