/// <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); }