Пример #1
0
            /// <summary>
            /// Заполнение выбранного стоблца в шаблоне
            /// (при условии пустого заголовка)
            /// </summary>
            /// <param name="colRange">столбец в excel</param>
            /// <param name="dgv">отображение</param>
            /// <param name="indxColDgv">индекс столбца</param>
            /// <param name="indxRowExcel">индекс строки в excel</param>
            private void fillSheetExcelToNHeader(Excel.Range colRange
                                                 , DataGridView dgv
                                                 , int indxColDgv
                                                 , int indxRowExcel)
            {
                int row = 0;

                for (int i = indxRowExcel; i < colRange.Rows.Count; i++)
                {
                    if ((((Excel.Range)colRange.Cells[i]).Value == null) &&
                        (bool.Parse(((Excel.Range)colRange.Cells[i]).MergeCells.ToString()) == false))
                    {
                        if (((Excel.Range)colRange.Cells[i - 1]).Value2 == null)
                        {
                            row = i;
                            break;
                        }
                        else
                        {
                            ;
                        }
                    }
                    else
                    {
                        ;
                    }
                }

                for (int j = 0; j < dgv.Rows.Count; j++)
                {
                    ////colRange.Cells.NumberFormat = "0";
                    //if (indxColDgv >= ((int)DataGridViewVedomostBl.INDEX_SERVICE_COLUMN.COUNT - 1))
                    colRange.Cells[row] =
                        //s_VedCalculate.AsParseToF
                        HPanelTepCommon.AsParseToF
                            (Convert.ToString(dgv.Rows[j].Cells[indxColDgv].Value));
                    //else
                    //    colRange.Cells[row] = Convert.ToString(dgv.Rows[j].Cells[indxColDgv].Value);

                    paintBorder((Excel.Range)colRange.Cells[row], (int)Excel.XlLineStyle.xlContinuous);
                    row++;
                }
            }
            /// <summary>
            /// Формирование таблицы данных с отображения
            /// </summary>
            /// <param name="tableSourceOrigin">таблица с оригинальными данными</param>
            /// <param name="idSession">номер сессии пользователя</param>
            /// <param name="typeValues">тип данных</param>
            /// <returns>таблица с новыми данными с вьюхи</returns>
            public DataTable FillTableToSave(DataTable tableSourceOrigin, int idSession, HandlerDbTaskCalculate.ID_VIEW_VALUES typeValues)
            {
                int i     = 0,
                    idAlg = -1
                , hoursOffSet
                , vsRatioValue             = -1
                , quality                  = 0,
                    indexPut               = 0;
                double          valueToRes = 0;
                DateTime        dtVal;
                NALG_PROPERTY   nalg_prop;
                COLUMN_PROPERTY col_prop;

                DataTable tableSourceEdit = new DataTable();

                tableSourceEdit.Columns.AddRange(
                    new DataColumn[] {
                    new DataColumn(@"ID_PUT", typeof(int))
                    , new DataColumn(@"ID_SESSION", typeof(long))
                    , new DataColumn(@"QUALITY", typeof(int))
                    , new DataColumn(@"VALUE", typeof(float))
                    , new DataColumn(@"WR_DATETIME", typeof(DateTime))
                    , new DataColumn(@"EXTENDED_DEFINITION", typeof(float))
                }
                    );

                if (s_flagBl)
                {
                    hoursOffSet = 1 * (-(TimeZoneInfo.Local.BaseUtcOffset.Hours + 1) + 24);
                }
                else
                {
                    hoursOffSet = (s_currentOffSet / 60);
                }

                foreach (DataGridViewColumn col in Columns)
                {
                    col_prop  = (COLUMN_PROPERTY)col.Tag;
                    nalg_prop = m_dictNAlgProperties[col_prop.m_putParameter.m_idNAlg];

                    if (col_prop.m_putParameter.m_idNAlg > 0)
                    {
                        foreach (DataGridViewRow row in Rows)
                        {
                            if (row.Index != row.DataGridView.RowCount - 1)
                            {
                                if (string.IsNullOrEmpty(row.Cells[col.Index].Value.ToString()) == false)
                                {
                                    idAlg        = col_prop.m_putParameter.m_idNAlg;
                                    valueToRes   = HPanelTepCommon.AsParseToF(row.Cells[col.Index].Value.ToString());
                                    vsRatioValue = nalg_prop.m_vsRatio;
                                    valueToRes  *= Math.Pow(10F, vsRatioValue);
                                    dtVal        = (DateTime)row.Tag;
                                    //??? в этом методе сортируется табл. по 2-ум полям
                                    //!!! срочно исключить, т.к. внутри 2-ух циклов
                                    quality = diffRowsInTables(tableSourceOrigin, valueToRes, i, nalg_prop.FormatRound, typeValues);

                                    tableSourceEdit.Rows.Add(new object[] {
                                        col_prop.m_putParameter.IdComponent
                                        , idSession
                                        , quality
                                        , valueToRes
                                        , dtVal.AddMinutes(-s_currentOffSet).ToString("F", tableSourceEdit.Locale)
                                        , i
                                    });

                                    i++;
                                }
                                else
                                {
                                    // в ячейке не валидное значение, не может быть определено
                                    ;
                                }
                            }
                            else
                            {
                                // крайняя строка (ИТОГО за период)
                                ;
                            }
                        } // цикл по строкам (датам) в представлении

                        indexPut++;
                    }
                    else
                    {
                        // идентификатор параметра в алгоритме расчета не валидный
                        ;
                    }
                } // цикл по столбцам (параметрам в алгоритме расчета, связанным с компонентом) в представлении

                tableSourceEdit = sortDataTable(tableSourceEdit, "WR_DATETIME");

                return(tableSourceEdit);
            }