예제 #1
0
 /// <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;
 }
예제 #2
0
        ///// <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));
            }
        }
예제 #3
0
            /// <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);
                    }
                }
            }
예제 #4
0
        /// <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);
            }
        }
예제 #5
0
        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);
            }
        }
예제 #6
0
            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(@"");
            }