Exemple #1
0
        private Document _ParseFile(Stream fileStream, string path)
        {
            var document = new Document();
            var xmlDocument = new XmlDocument();

            xmlDocument.Load(fileStream);

            document.File = path;

            foreach (XmlNode childNode in xmlDocument.ChildNodes[1].ChildNodes)
            {
                switch (childNode.Name)
                {
                    case "Timestamp":
                        document.Timestamp = _GetTimeStamp(childNode);
                        break;
                    case "Summary":
                        document.Summary = _GetSummary(childNode);
                        break;
                    case "MeasurementData":
                        document.MeasurementData = _GetMeasurementData(childNode);
                        break;
                    case "Comments":
                        document.Comments = _GetCommentList(childNode);
                        break;
                    case "Calibrations":
                        document.Calibrations = _GetCalibrationList(childNode);
                        break;
                    case "Adjustments":
                        document.Adjustments = _GetAdjustmentList(childNode);
                        break;
                }
            }

            fileStream.Close();
            Logger.WriteDebugMessage("Parsed file successfully");

            return document;
        }
        private static void _WriteDeviceInfo(Excel._Worksheet worksheet, Document document)
        {
            worksheet.Cells[1, 1] = "Device Name:";
            worksheet.Cells[1, 2] = document.Summary.Device.Id;
            worksheet.Cells[2, 1] = "Line Name:";
            worksheet.Cells[2, 2] = document.Summary.Line.Name;
            worksheet.Cells[3, 1] = "Product Type:";
            worksheet.Cells[3, 2] = document.Summary.ActiveProduct.Product.ProductType.Name;
            worksheet.Cells[4, 1] = "Product Name:";
            worksheet.Cells[4, 2] = document.Summary.ActiveProduct.Product.Name;

            worksheet.Range["A1", "B4"].Borders.Weight = Excel.XlBorderWeight.xlMedium;
        }
        public void AddMiscellaneousValues(Document document)
        {
            try
            {
                MainForm.LogWriter.WriteDebugMessage(string.Format("Adding Miscellaneous Data. Device: '{0}' Line: '{1}' Product: '{2}'",
                                                                        document.Summary.Device.Id,
                                                                        document.Summary.Line.Name,
                                                                        document.Summary.ActiveProduct.Product.Name));

                mApplication.ScreenUpdating = false;
                var values = new string[15];

                values[0] = document.MeasurementData.SystemStatus.ToString(CultureInfo.InvariantCulture);
                values[1] = document.MeasurementData.DeviceStatus.ToString(CultureInfo.InvariantCulture);
                values[2] = document.MeasurementData.LineStatus.ToString(CultureInfo.InvariantCulture);
                values[3] = _GetFormatedTimeStamp(document.MeasurementData.Timestamp.Local);

                if (document.Comments.Count > 0)
                {
                    values[4] = document.Comments[0].Text;
                    values[5] = document.Calibrations[0].Username;
                    values[6] = document.Calibrations[0].Channels[0].Name;
                }
                else
                {
                    values[4] = string.Empty;
                    values[5] = string.Empty;
                    values[6] = string.Empty;
                }

                if (document.Calibrations.Count > 0)
                {
                    values[7] = document.Calibrations[0].Channels[0].SavedValue.ToString();
                    values[8] = document.Calibrations[0].Channels[0].Reference.ToString();
                    values[9] = document.Calibrations[0].Channels[0].Deviation.ToString();
                }
                else
                {
                    values[7] = string.Empty;
                    values[8] = string.Empty;
                    values[9] = string.Empty;
                }

                if (document.Adjustments.Count > 0)
                {
                    values[10] = document.Adjustments[0].Username;
                    values[11] = document.Adjustments[0].Channels[0].Name;
                    values[12] = document.Adjustments[0].Channels[0].AverageDeviation.ToString();
                    values[13] = document.Adjustments[0].Channels[0].OriginalGain.ToString();
                    values[14] = document.Adjustments[0].Channels[0].AdjustedGain.ToString();
                }
                else
                {
                    values[10] = string.Empty;
                    values[11] = string.Empty;
                    values[12] = string.Empty;
                    values[13] = string.Empty;
                    values[14] = string.Empty;
                }

                //Add timestamp
                var cell = "A" + (mMiscellaneousDataWorksheet.UsedRange.Rows.Count + 1);

                //Splitview handling?
                mWorkbook.Windows.Item[2].Activate();
                //mMeasurementDataWorksheet.Activate();

                //range.Value2 = document.MeasurementData.Timestamp.Local.ToShortDateString() + " " +
                //                document.MeasurementData.Timestamp.Local.ToLongTimeString() + "." + document.MeasurementData.Timestamp.Local.Millisecond;

                ////Add measuring values
                //cell = "B" + (mMiscellaneousDataWorksheet.UsedRange.Rows.Count);
                var range = mMiscellaneousDataWorksheet.Range[cell, cell].Resize[Missing.Value, values.Length];
                range.Value2 = values;

                //Format row
                cell = "A" + (mMiscellaneousDataWorksheet.UsedRange.Rows.Count);
                range = mMiscellaneousDataWorksheet.Range[cell, cell].Resize[Missing.Value, values.Length];
                range.EntireColumn.AutoFit();
                range.Borders.Weight = Excel.XlBorderWeight.xlThin;

                //Display and focus new row
                mApplication.ScreenUpdating = true;

                //Splitview handling?
                mWorkbook.Windows.Item[2].Activate();
                //mMeasurementDataWorksheet.Activate();
                //range.Activate();

                MainForm.LogWriter.WriteDebugMessage("Added Miscellaneous Data successfully.");
            }
            catch (Exception exception)
            {
                MainForm.LogWriter.WriteFailureMessage("Adding Measuring Data failed!");
                MainForm.LogWriter.WriteException(exception);
                MainForm.ShowErrorMessage(exception);
            }
        }
        public void AddHeaders(Document document)
        {
            try
            {
                MainForm.LogWriter.WriteDebugMessage(string.Format("Adding Header. Device: '{0}' Line: '{1}' Product: '{2}'",
                                                                        document.Summary.Device.Id,
                                                                        document.Summary.Line.Name,
                                                                        document.Summary.ActiveProduct.Product.Name));

                var channelNames = new string[document.MeasurementData.Channels.Count + 1];
                channelNames[0] = "Timestamp";

                for (var i = 1; i < channelNames.Length; i++)
                {
                    channelNames[i] = document.MeasurementData.Channels[i - 1].Name + " [" + document.MeasurementData.Channels[i - 1].Unit.Name + "]";
                }

                //Add general header for measurement data worksheet
                _WriteDeviceInfo(mMeasurementDataWorksheet, document);

                //Add general header for miscellaneous data worksheet
                _WriteDeviceInfo(mMiscellaneousDataWorksheet, document);

                var miscColumnHeadersRow1 = new[]
                {
                    "System Status",
                    "Device Status",
                    "Line Status",
                    "Timestamp",
                    "Comment",
                    "Calibration",
                    string.Empty,
                    string.Empty,
                    string.Empty,
                    string.Empty,
                    "Adjustment",
                    string.Empty,
                    string.Empty,
                    string.Empty,
                    string.Empty
                };

                var miscColumnHeadersRow2 = new[]
                {
                    string.Empty,
                    string.Empty,
                    string.Empty,
                    string.Empty,
                    string.Empty,
                    "User Name",
                    "Channel",
                    "Saved Value",
                    "Reference Value",
                    "Deviation",
                    "User Name",
                    "Channel",
                    "Average Deviation",
                    "Original Gain",
                    "New Gain"
                };

                _WriteColumnHeaders(mMeasurementDataWorksheet, "A6", channelNames);
                _WriteColumnHeaders(mMiscellaneousDataWorksheet, "A6", miscColumnHeadersRow1);
                _WriteColumnHeaders(mMiscellaneousDataWorksheet, "A7", miscColumnHeadersRow2);

                _MergeCells(mMiscellaneousDataWorksheet, "A6", "A7");
                _MergeCells(mMiscellaneousDataWorksheet, "B6", "B7");
                _MergeCells(mMiscellaneousDataWorksheet, "C6", "C7");
                _MergeCells(mMiscellaneousDataWorksheet, "D6", "D7");
                _MergeCells(mMiscellaneousDataWorksheet, "E6", "E7");
                _MergeCells(mMiscellaneousDataWorksheet, "F6", "J6");
                _MergeCells(mMiscellaneousDataWorksheet, "K6", "O6");

                mMeasurementDataWorksheet.Application.Windows.Item[1].SplitRow = 6;
                mMeasurementDataWorksheet.Application.Windows.Item[1].FreezePanes = true;

                mMiscellaneousDataWorksheet.Application.Windows.Item[2].SplitRow = 7;
                mMiscellaneousDataWorksheet.Application.Windows.Item[2].FreezePanes = true;
                MainForm.LogWriter.WriteDebugMessage("Added Header successfully.");
            }
            catch (Exception exception)
            {
                MainForm.LogWriter.WriteFailureMessage("Adding Header failed!");
                MainForm.LogWriter.WriteException(exception);
                MainForm.ShowErrorMessage(exception);
            }
        }
        public void AddMeasurementValues(Document document)
        {
            try
            {
                MainForm.LogWriter.WriteDebugMessage(string.Format("Adding Measuring Data. Device: '{0}' Line: '{1}' Product: '{2}'",
                                                                        document.Summary.Device.Id,
                                                                        document.Summary.Line.Name,
                                                                        document.Summary.ActiveProduct.Product.Name));

                mApplication.ScreenUpdating = false;
                var measurementValues = new double[document.MeasurementData.Channels.Count];

                for (var i = 0; i < measurementValues.Length; i++)
                {
                    if (document.MeasurementData.Channels[i].MeasurementValue.Value != null)
                    {
                        measurementValues[i] = Convert.ToDouble(document.MeasurementData.Channels[i].MeasurementValue.Value);
                    }
                }

                //Add timestamp
                var cell = "A" + (mMeasurementDataWorksheet.UsedRange.Rows.Count + 1);

                //Splitview handling?
                mWorkbook.Windows.Item[1].Activate();
                //mMeasurementDataWorksheet.Activate();
                var range = mMeasurementDataWorksheet.Range[cell];
                range.Value2 = _GetFormatedTimeStamp(document.MeasurementData.Timestamp.Local);

                //Add measuring values
                cell = "B" + (mMeasurementDataWorksheet.UsedRange.Rows.Count);
                range = mMeasurementDataWorksheet.Range[cell, cell].Resize[Missing.Value, measurementValues.Length];
                range.Value2 = measurementValues;

                //Format row
                cell = "A" + (mMeasurementDataWorksheet.UsedRange.Rows.Count);
                range = mMeasurementDataWorksheet.Range[cell, cell].Resize[Missing.Value, measurementValues.Length + 1];
                range.EntireColumn.AutoFit();
                range.Borders.Weight = Excel.XlBorderWeight.xlThin;

                //Display and focus new row
                mApplication.ScreenUpdating = true;

                //Splitview handling?
                mWorkbook.Windows.Item[1].Activate();
                //mMeasurementDataWorksheet.Activate();
                //range.Activate();

                MainForm.LogWriter.WriteDebugMessage("Added Measuring Data successfully.");
            }
            catch (Exception exception)
            {
                MainForm.LogWriter.WriteFailureMessage("Adding Measuring Data failed!");
                MainForm.LogWriter.WriteException(exception);
                MainForm.ShowErrorMessage(exception);
            }
        }