/// <summary> /// Добавление подписи месяца /// </summary> /// <param name="exclWrksht">лист экселя</param> /// <param name="dgv">грид</param> /// <param name="dtRange">дата</param> private void setSignature(Excel.Worksheet exclWrksht, DataGridView dgv, ASUTP.Core.DateTimeRange dtRange) { //Excel.Range exclTEC = exclWrksht.get_Range("B2"); Excel.Range exclRMonth = exclWrksht.get_Range("R1"); exclRMonth.Value2 = string.Format("Ведомость {0} за {1} месяц {2} года" , ((HandlerDbTaskCalculate.TECComponent)(dgv as DataGridViewVedomostBl).Tag).m_nameShr, ASUTP.Core.HDateTime.NameMonths[dtRange.Begin.Month - 1], dtRange.Begin.Year); exclRMonth.Font.Bold = true; //HDateTime.NameMonths[dtRange.Begin.Month - 1] + " " + dtRange.Begin.Year; }
///// <summary> ///// Возвратить одну из частей строки, при наличии разделителя ///// </summary> ///// <param name="headerTxt">Исходная строка, в которой присутствует разделитель</param> ///// <returns>Часть строки</returns> //private string splitString(string headerTxt, char chSeparate = ',') //{ // string[] spltHeader = headerTxt.Split(chSeparate); // if (spltHeader.Length > 1) // // разделитель присутствует - вернуть крайнюю часть // return spltHeader[1].TrimStart(); // else // // разделитель отсутствует - вернуть исходную строку // return spltHeader[0]; //} ///// <summary> ///// Удаление пустой строки ///// </summary> ///// <param name="colRange">столбец в excel</param> ///// <param name="row">номер строки</param> //private void deleteNullRow(Excel.Range colRange, int row) //{ // Excel.Range rangeCol = (Excel.Range)m_wrkSheet.Columns[1]; // while (Convert.ToString(((Excel.Range)rangeCol.Cells[row]).Value) == "") { // Excel.Range rangeRow = (Excel.Range)m_wrkSheet.Rows[row]; // rangeRow.Delete(Excel.XlDeleteShiftDirection.xlShiftUp); // } //} protected void setHeaderValues(Excel.Range range, ASUTP.Core.DateTimeRange dates, int indxRowExcel) { int row = -1 , cntDay = -1; DateTime curDate; row = indxRowExcel; cntDay = (dates.End - dates.Begin).Days; for (int j = 0; j < cntDay; j++) { range.Cells[row++] = Convert.ToString(curDate = dates.Begin.AddDays(j)); } }
/// <summary> /// Подключение шаблона листа экселя и его заполнение /// </summary> /// <param name="dgView">отрбражение данных</param> /// <param name="dtRange">дата</param> public void CreateExcel(DataGridView dgView, ASUTP.Core.DateTimeRange dtRange) { if (addWorkBooks()) { m_workBook.AfterSave += workBook_AfterSave; m_workBook.BeforeClose += workBook_BeforeClose; m_workSheet = (Excel.Worksheet)m_workBook.Worksheets.get_Item("VedomostBl"); int indxCol = 1; try { paintTable(dgView); } catch (Exception e) { closeExcel(); ASUTP.Logging.Logg().Exception(e, @"PanelTaskVedomostBl.ReportExcel::CreateExcel () - вызов 'paintTable () - '...", Logging.INDEX_MESSAGE.NOT_SET); } try { fillToArray(dgView); for (int i = 0; i < dgView.Columns.Count; i++) { //if (i >= ((int)DataGridViewVedomostBl.INDEX_SERVICE_COLUMN.COUNT - 1)) { Excel.Range colRange = (Excel.Range)m_workSheet.Columns[indxCol]; if (dgView.Columns[i].HeaderText.Equals(string.Empty) == false) { foreach (Excel.Range cell in colRange.Cells) { if (Convert.ToString(cell.Value).Equals(string.Empty) == false) { if (Convert.ToString(cell.Value) == splitString(dgView.Columns[i].HeaderText)) { fillSheetExcel(colRange, dgView, i, cell.Row); break; } } } } //else // foreach (Excel.Range cell in colRange.Cells) // if (Convert.ToString(cell.Value) == dgView.Columns[i].Name) // { // fillSheetExcelToNHeader(colRange, dgView, i, cell.Row + 1); // break; // } break; // //indxCol++; //} else // ; } setSignature(m_workSheet, dgView, dtRange); m_execApp.Visible = true; closeExcel(); } catch (Exception e) { closeExcel(); Logging.Logg().Exception(e, @"PanelTaskVedomostBl.ReportExcel::CreateExcel () - общая ошибка...", Logging.INDEX_MESSAGE.NOT_SET); } } }
/// <summary> /// Подключение шаблона листа экселя и его заполнение /// </summary> /// <param name="dgv">отрбражение данных</param> /// <param name="dtRange">дата</param> public void Create(string nameSheet, int headerColumn, int beginDataRow, Dictionary <int, List <string> > allValues, ASUTP.Core.DateTimeRange dtRange) { if (addWorkbook() == true) { m_workBook.AfterSave += workBook_AfterSave; m_workBook.BeforeClose += workBook_BeforeClose; m_wrkSheet = (Excel.Worksheet)m_workBook.Worksheets.get_Item(nameSheet); try { create(headerColumn, beginDataRow, allValues, dtRange); m_excApp.Visible = true; Marshal.ReleaseComObject(m_excApp); } catch (Exception e) { close(); Logging.Logg().Exception(e, string.Format(@"TepCommon.ReportMSExcel::Create () - ..."), Logging.INDEX_MESSAGE.NOT_SET); } } else { Logging.Logg().Error(string.Format(@"TepCommon.ReportMSExcel::Create () - добавление книги..."), Logging.INDEX_MESSAGE.NOT_SET); } }
protected virtual void create(int headerColumn, int beginDataRow, Dictionary <int, List <string> > allValues, ASUTP.Core.DateTimeRange dtRange) { List <string> values; Excel.Range range; //values = new List<string>(); range = (Excel.Range)m_wrkSheet.Columns[headerColumn]; setHeaderValues(range, dtRange, beginDataRow); foreach (int address in allValues.Keys) { range = (Excel.Range)m_wrkSheet.Columns[address]; values = allValues[address]; setColumnValues(range, values.Take(values.Count() - 1).ToList(), beginDataRow); } }
protected override void create(int headerColumn, int beginDataRow, Dictionary <int, List <string> > allValues, ASUTP.Core.DateTimeRange dtRange) { base.create(headerColumn, beginDataRow, allValues, dtRange); m_wrkSheet.get_Range("A2").Value2 = string.Format(@"{0} {1}", ASUTP.Core.HDateTime.NameMonths[dtRange.Begin.Month - 1], dtRange.Begin.Year); //// TODO: Наименование ТЭЦ //m_wrkSheet.get_Range("B2").Value2 = string.Format(@""); }