/// <summary>Приложение</summary> private void Applications() { foreach (var one in selections) { Well well = one.Well; ISheet sheet = book.GetSheet("Приложение").CopySheet(well.PresentNumber != string.Empty ? well.PresentNumber : "без_номера"); Substitute = new CellExchange_Class(sheet); //Substitute.AddExchange("{объект}", obj.Adres + ' ' + well.PresentNumber, 0); Substitute.AddExchange("{абонент}", client.Detail.FullName, 0); Substitute.AddExchange("{колодец}", $"{well.FullName} - {well.PresentNumber}", 0); Substitute.AddExchange("{адрес}", (client.Objects.Any() ? obj.Adres.CutAdres(false) : string.Empty), 0); Substitute.AddExchange("{номер отбора}", one.FormatNumber, 0); { var works = AdditionnTable.GetSigner(data.ETypeTemplate.Extract, "Приложение"); Substitute.AddExchange("{должность}", works.Post, 0); Substitute.AddExchange("{фио}", works.FIO, 0); } tableSelection = new TableSelection(obj, sample); tableSelection.CreateTable(SearchCellFromMark(sheet, "{таблица}", false), one); tableSelection.Signature(SearchCellFromMark(sheet, "{пример}", false), Substitute); Substitute.AddExchange("{полное наименование колодца}", well.FullName + ' ' + well.PresentNumber, 0); Substitute.Exchange(); } book.RemoveSheetAt(book.GetSheetIndex("Приложение")); }
private void LoadTitle(SelectionWell selectionWell) { Substitute = new CellExchange_Class(sheet); Accredit accredit = AdditionnTable.GetAccredit(); Substitute.AddExchange(mark.acred, $"{accredit.Text}\nВыдан {accredit.YMDFrom}", 0); Worker work = AdditionnTable.GetSigner(data.ETypeTemplate.Protocol, "Протокол"); Substitute.AddExchange(mark.fio_nac, work.FIO, 0); Substitute.AddExchange(mark.number_prot, selectionWell.FormatNumber, 0); Substitute.AddExchange(mark.abon, selectionWell.Objecte.Client.Detail.FullName, 0); Substitute.AddExchange(mark.yr_adr, Helpers.LogicHelper.AdresLogic.FirstModel(selectionWell.Objecte.Client.Detail.AdresLegalID).Adr.CutAdres(false), 0); Substitute.AddExchange(mark.type_well, G.TypeWell.Rows.Get <string>(selectionWell.Well.TypeWellID, C.TypeWell.FullName), 0); Substitute.AddExchange(mark.select_adr, selectionWell.Objecte.Adres.CutAdres(false), 0); Substitute.AddExchange(mark.date_select, MyTools.StringDate_From_YMDHMS(selectionWell.YMDHM, MyTools.EInputDate.YMDHM, MyTools.EInputDate.YMD), 0); Substitute.AddExchange(mark.time_select, MyTools.StringDate_From_YMDHMS(selectionWell.YMDHM, MyTools.EInputDate.YMDHM, MyTools.EInputDate.YMDHM), 0); Substitute.AddExchange(mark.repres, new Representative(selectionWell.Sample.RepresentativeID).Post_FIO, 0); Substitute.AddExchange(mark.year, DateControl_Class.SelectYear, 0); MonthYear(); NumberFolder(_selectionWells.Select(x => x.Objecte.NumberFolder).ToArray()); work = AdditionnTable.GetSigner(data.ETypeTemplate.Protocol, "Протокол"); Substitute.AddExchange(mark.fio, work.FIO, 0); Substitute.AddExchange(mark.job, work.Post, 0); int day, month; MyTools.Y_M_D_From_YMD(StaticDate.SelectDate, out month, out month, out day); Substitute.AddExchange(mark.day, day, 0); Substitute.AddExchange(mark.month, MyTools.Month_From_M_C_R(month, Reg: MyTools.ERegistor.ToLower), 0); Substitute.AddExchange(mark._month, month.ToString("00"), 0); Substitute.Exchange(); }
private void LoadTitle() { sheet = book.GetSheet("Титульник"); Substitute = new CellExchange_Class(sheet); Worker worker = AdditionnTable.GetSigner(data.ETypeTemplate.Journal, "Титульник"); Substitute.AddExchange(mark.fio, worker.FIO, 1); Substitute.AddExchange(mark.job, worker.Post, 1); Substitute.Exchange(); }
/// <summary>Заполнение текста из базы</summary> /// <param name="ListName">имя листа</param> protected void LoadTextTemplate(ISheet sheet, string ListName, int count = 0) { CellExchange_Class ex = new CellExchange_Class(sheet); foreach (var one in TemplateStorage.textFromTP.Where(x => x.ListName == ListName)) { var texts = one.Text.Split('\n').ToList(); ICellStyle defStyle = null; IRow Defrow = SearchRowFromMark(sheet, one.ThisTemplate); if (texts.FirstOrDefault(x => x.Contains(StyleTarget.DefStyle)) != null) { defStyle = LoadStyle(texts.First(x => x.Contains(StyleTarget.DefStyle))); texts.Remove(texts.First(x => x.Contains(StyleTarget.DefStyle))); } if (texts.Count > 1) { foreach (var text in texts) { Defrow = Defrow.CopyRowTo(Defrow.RowNum + 1); IRow row = sheet.GetRow(Defrow.RowNum - 1); string stroka = text; if (text.Contains(StyleTarget.Style)) { ICellStyle style = LoadStyle(text.Substring(text.IndexOf(StyleTarget.Style))); foreach (var cell in row.Cells) { cell.CellStyle = style; } stroka = text.Substring(0, text.IndexOf(StyleTarget.Style)); } else if (defStyle != null) { foreach (var cell in row.Cells) { cell.CellStyle = defStyle; } } stroka = stroka.StringDivision(80); ex.AddExchange(one.ThisTemplate, (e) => e.Row.Height = (short)(300 / 11 * 12 * stroka.Split('\n').Length), 1); ex.AddExchange(one.ThisTemplate, stroka, 1); } } else { ex.AddExchange(one.ThisTemplate, one.Text, count); } ex.AddExchange(one.ThisTemplate, (e) => { sheet.RemoveRow(e.Row); }, 1); } ex.Exchange(); }
/// <summary>Обработка письма</summary> private void Letter() { Substitute = new CellExchange_Class(book.GetSheet("Письмо")); ClientName(client); ObjectAdres(obj, true); MonthYearSelect(); NumberFolder(obj.NumberFolder); Substitute.AddExchange("{год месячного объёма}", DateControl_Class.SelectYear - 1, 0); Substitute.AddExchange("{листов}", selections.Length, 0); NumberFolder(obj.NumberFolder); var works = AdditionnTable.GetSigner(data.ETypeTemplate.Extract, "Письмо"); Substitute.AddExchange("{должность}", works.Post, 0); Substitute.AddExchange("{фио}", works.FIO, 0); Substitute.Exchange(); }
private void Letter() { sheet = book.GetSheet("Письмо"); if (!R621 && !R644) { book.RemoveSheetAt(book.GetSheetIndex("Письмо")); return; } Substitute = new CellExchange_Class(sheet); ClientName(obj.Client); ObjectAdres(obj, true); MonthYearSelect(); NumberFolder(obj.NumberFolder); var worker = AdditionnTable.GetSigner(data.ETypeTemplate.CalculationFees, "Письмо"); Substitute.AddExchange(mark.job, worker.Post, 1); Substitute.AddExchange(mark.fio, worker.FIO, 1); int Radder621 = SearchRowFromMark(sheet, mark.adder621).RowNum; Resolution resolution = PollutionBase_Class.AllResolution.First(x => x.CurtName.Contains("621")); ResolutionClarify(resolution, R621); if (R621) { Substitute.AddExchange(mark.adder621, GetNormDoc(resolution), 1); } else { Substitute.AddExchange(mark.adder621, e => { e.Row.ZeroHeight = true; }, 1); } resolution = PollutionBase_Class.AllResolution.First(x => x.CurtName.Contains("644")); ResolutionClarify(resolution, R644); if (R644) { Substitute.AddExchange(mark.adder644, GetNormDoc(resolution), 1); } else { Substitute.AddExchange(mark.adder644, e => { e.Row.ZeroHeight = true; }, 1); } Substitute.Exchange(); ResizeHeight(sheet, Radder621, Radder621 + 3); }
protected override void internalStart() { { CP = new Control_Print(); CP.Elems.SetRowFromGrid(MyTools.GL_Auto); var DateSelect = new DateSelector(_negotiationAssistant.YMD); CP.Elems.SetFromGrid(DateSelect.View); CP.ShowDialog(); if (_negotiationAssistant.WorkerID == 0) { MessageBox.Show("Не выбран пробоотборщик!"); return; } _negotiationAssistant.YMD = MyTools.YMD_From_DateTime(DateSelect.dateTime); } Objecte obj = _negotiationAssistant.Objecte; Accredit acc = AdditionnTable.GetAccredit(); string sampler = _negotiationAssistant.Worker.Post_FIO; foreach (var one in obj.Wells) { book = TemplateStorage.WorkBook; Substitute = new CellExchange_Class(book.GetSheetAt(0)); var Details = obj.Client.Detail; Substitute.AddExchange("{абонент}", Details.FullName, 0); if (obj.Separate) { Substitute.AddExchange("{юридический адрес}", obj.Detail.LegalAdres, 0); } else { Substitute.AddExchange("{юридический адрес}", Helpers.LogicHelper.AdresLogic.FirstModel(Details.AdresLegalID).Adr, 0); } Substitute.AddExchange("{тип колодца}", new TypeWell(one.TypeWellID).FullName + " " + new TypeWell(one.TypeWellID).CurtName + '-' + one.Number, 0); Substitute.AddExchange("{место отбора}", obj.Adres.CutAdres(false), 0); Substitute.AddExchange("{аккредитация}", acc.Text, 0); Substitute.AddExchange("{дата аккредитации}", acc.YMDFrom, 0); Substitute.AddExchange("{пробоотборщик}", sampler, 0); //Substitute.AddExchange("{представитель абонента}", sample == null ? string.empty : sample.IDRepresentative > 0 ? new Representative(sample.IDRepresentative).Post_FIO : string.empty, 0); Substitute.Exchange(); Print("Акты", "акт отбора пробы " + new TypeWell(one.TypeWellID).FullName + ' ' + one.Number, EPathPrint.Documents); } }
private void LoadCap(string name) { Substitute = new CellExchange_Class(sheet); Substitute.AddExchange("{месяц}", MyTools.Month_From_M_C_R(MyTools.M_From_YM(DateControl_Class.SelectMonth), Reg: MyTools.ERegistor.ToLower), 0); Substitute.AddExchange("{год}", DateControl_Class.SelectYear, 0); MonthYear(); Worker workers = AdditionnTable.GetSigner(data.ETypeTemplate.Registry, "директор"); Substitute.AddExchange("{должность директора}", workers.Post, 0); Substitute.AddExchange("{фио директора}", workers.rFIO, 0); workers = AdditionnTable.GetSigner(data.ETypeTemplate.Registry, "подписывающий"); Substitute.AddExchange("{должность}", workers.Post, 0); Substitute.AddExchange("{фио}", workers.FIO, 0); LoadTextTemplate(sheet, name, 1); Substitute.AddExchange("{итоговая сумма}", summa.ToMoney(), 0); Substitute.Exchange(); }
private void LoadTable() { sheet = book.GetSheet("Таблица"); Substitute = new CellExchange_Class(sheet); IRow row = SearchRowFromMark(sheet, StaticMark.abonent, false); var selectionWells = Helpers.LogicHelper.SelectionWellLogic.Find(DateControl_Class.SelectMonth, 1); foreach (var selectionWell in selectionWells) { sheet.ShiftRows(row.RowNum + 3, sheet.LastRowNum, 0); row.CopyRowTo(row.RowNum + 3); sheet.GetRow(row.RowNum + 1).CopyRowTo(row.RowNum + 4); sheet.GetRow(row.RowNum + 2).CopyRowTo(row.RowNum + 5); } foreach (var selectionWell in selectionWells.OrderBy(x => x.Number)) { Client client = selectionWell.Objecte.Client; ClientName(client, false); WellNumber(selectionWell); Substitute.AddExchange(mark.number_sample, $"{selectionWell.Number}-С-{MyTools.YearMonth_From_YM(MyTools.YM_From_YMDHM(selectionWell.YMDHM), MyTools.EDateTimeTypes.DivisionSymbol, DivisionSymbol: "/")}", 1); row = SearchRowFromMark(sheet, "{таблица}"); tableSelection = new TableSelection(selectionWell.Objecte, selectionWell.Sample); tableSelection.CreateTable(SearchCellFromMark(sheet, "{таблица}", false), selectionWell); } tableSelection.Signature(SearchCellFromMark(sheet, "{пример}", false), Substitute); ResizeWidth(sheet, MyTools.ETypeFormatBook.Horizontal, tableSelection.table); MonthYearSelect(); Worker worker = AdditionnTable.GetSigner(data.ETypeTemplate.Journal, "Таблица"); Substitute.AddExchange(mark.fio, worker.FIO, 1); Substitute.AddExchange(mark.job, worker.Post, 1); Substitute.Exchange(); }
protected override void internalStart() { Objecte obj = _negotiationAssistant.Objecte; book = TemplateStorage.WorkBook; Substitute = new CellExchange_Class(book.GetSheetAt(0)); ClientName(_negotiationAssistant.Objecte.Client); NumberFolder(obj.NumberFolder); #region Подписывающий var works = AdditionnTable.GetSigner(data.ETypeTemplate.LetterNotification, "Письмо"); Substitute.AddExchange("{должность}", works.Post, 0); Substitute.AddExchange("{ФИО}", works.FIO, 0); #endregion #region адрес/дата ObjectAdres(obj, true); CP = new Control_Print(); CP.Elems.SetRowFromGrid(MyTools.GL_Auto); var DateSelect = new DateSelector(_negotiationAssistant.YMD); CP.Elems.SetFromGrid(DateSelect.View); CP.ShowDialog(); if (DateSelect.dateTime == null) { return; } _negotiationAssistant.YMD = MyTools.YMD_From_DateTime(DateSelect.dateTime); Substitute.AddExchange("{дата отбора}", MyTools.YearMonthDay_From_YMD(DateSelect.dateTime), 0); #endregion Substitute.AddExchange("{адрес отбора}", obj.Adres, 0); Substitute.Exchange(); Print("Письма", "Письмо", EPathPrint.Documents); }
private void LoadTitle() { Substitute = new CellExchange_Class(sheet); ClientName(this._selectionWell.Objecte.Client, false); ClientAdres(this._selectionWell.Objecte.Client, false); ObjectAdres(this._selectionWell.Objecte, false); Substitute.AddExchange(mark.period, $"{MyTools.YearMonth_From_YM(StartYM, MyTools.EDateTimeTypes.BeautifulWords)} - {MyTools.YearMonth_From_YM(StartYM + MonthCount - 1, MyTools.EDateTimeTypes.BeautifulWords)}", 0); Worker worker = AdditionnTable.GetSigner(data.ETypeTemplate.InspectionResult, "Результат"); Substitute.AddExchange(mark.fio, worker.FIO, 0); Substitute.AddExchange(mark.job, worker.Post, 0); sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(8, 8, 6, 8 + (MonthCount > 6 ? MonthCount / 2 : 0) + (ShowNorms ? 2 : 0))); Substitute.Exchange(); int span = 2 + MonthCount + (ShowNorms ? 2 : 0); for (int i = 0; i < 5; i++) { sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(i, i, 0, span)); } }
public static bool OtchProtokolType1(Protokols_class.SGroup_class.Protokol_class Protokol, bool CreateNew = true, bool Open = true) { { var MsgErr = ""; for (int i = 0; i < Protokol.MarkCount; i++) { var PAMIndex = -1; for (int j = 0; j < Protokol.SampleCount; j++) { if (Protokol[j][i].LocalAlow && Protokol[j][i].Method.Length > 0) { if (PAMIndex < 0) { PAMIndex = j; } else if (Protokol[j][i].Method != Protokol[PAMIndex][i].Method) { MsgErr += '\n' + Protokol[j][i].Mark + " имеет различные методы у нормативов " + T.Object.Rows.Get <string>(Protokol[j].ObjectID, C.Object.Norm, C.Norm.Name) + " и " + T.Object.Rows.Get <string>(Protokol[PAMIndex].ObjectID, C.Object.Norm, C.Norm.Name); } } } } if (MsgErr.Length > 0) { MessageBox.Show(MsgErr, "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } } string NewFileName; { int Month, Year; ATMisc.GetYearMonthFromYM(Protokol.Parent.YM, out Year, out Month); { NewFileName = Application.StartupPath + "\\Отчеты\\"; if (!Directory.Exists(NewFileName)) { Directory.CreateDirectory(NewFileName); } NewFileName += T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) + "\\"; if (!Directory.Exists(NewFileName)) { Directory.CreateDirectory(NewFileName); } NewFileName += ATMisc.GetMonthName1(Month) + "\\"; if (!Directory.Exists(NewFileName)) { Directory.CreateDirectory(NewFileName); } } NewFileName += ProtokolFileName(Protokol); } if (CreateNew || !File.Exists(NewFileName)) { var WorkBook = ATMisc.GetGenericExcel("Протокол испытаний тип 1.xls"); if (WorkBook == null) { return(false); } var TitleSheet = WorkBook.GetSheet("Заголовок"); NPOI.SS.UserModel.ISheet ByPodrSheet; if (TitleSheet == null) { MessageBox.Show("В шаблоне не найден лист \"Заголовок\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } if (Protokol.MarkCount == 0) { MessageBox.Show("Заполненые показатели не найдены.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } var Font = WorkBook.CreateFont(); Font.Color = NPOI.HSSF.Util.HSSFColor.OliveGreen.Index; Font.IsStrikeout = false; Font.FontHeightInPoints = 11; Font.FontName = "Times New Roman"; Font.Color = short.MaxValue; var StyleLRTD_CC = WorkBook.CreateCellStyle(); StyleLRTD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_CC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_CC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleLRTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLRTD_CC.SetFont(Font); StyleLRTD_CC.WrapText = true; var ExpStyle = WorkBook.CreateCellStyle(); ExpStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; ExpStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; ExpStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; ExpStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; ExpStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; ExpStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; ExpStyle.SetFont(Font); ExpStyle.WrapText = true; ExpStyle.DataFormat = WorkBook.CreateDataFormat().GetFormat("0.00E+00"); var StyleLRTD_LC = WorkBook.CreateCellStyle(); StyleLRTD_LC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_LC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_LC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_LC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_LC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; StyleLRTD_LC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLRTD_LC.SetFont(Font); StyleLRTD_LC.WrapText = true; var StyleLRD_CC = WorkBook.CreateCellStyle(); StyleLRD_CC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRD_CC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleLRD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLRD_CC.SetFont(Font); StyleLRD_CC.WrapText = true; var StyleLRT_CC = WorkBook.CreateCellStyle(); StyleLRT_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRT_CC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRT_CC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRT_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleLRT_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLRT_CC.SetFont(Font); StyleLRT_CC.WrapText = true; var StyleRTD_CC = WorkBook.CreateCellStyle(); StyleRTD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleRTD_CC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleRTD_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleRTD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleRTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleRTD_CC.SetFont(Font); StyleRTD_CC.WrapText = true; var StyleLTD_CC = WorkBook.CreateCellStyle(); StyleLTD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleLTD_CC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLTD_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleLTD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleLTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLTD_CC.SetFont(Font); StyleLTD_CC.WrapText = true; var StyleTD_CC = WorkBook.CreateCellStyle(); StyleTD_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleTD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleTD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleTD_CC.SetFont(Font); StyleTD_CC.WrapText = true; string UnDeleteSheetName; var AddInSheetName = T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.PSG, C.PSG.Name); var NormID = Protokol[0].NormID; var ObjectsLocations = Protokol.ObjectsLocations; switch (Protokol.SGroup) { case data.SGroup.Middle1: UnDeleteSheetName = "Усредненный"; { int Index = WorkBook.GetSheetIndex(UnDeleteSheetName); ByPodrSheet = WorkBook.GetSheetAt(Index); WorkBook.SetSheetName(Index, "Концентрации"); } if (ByPodrSheet == null) { MessageBox.Show("В шаблоне не найден лист \"" + UnDeleteSheetName + "\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } var Exchange = new CellExchange_Class(ByPodrSheet); { var NumC = new ATMisc.CellMark_struct("{номер}"); var NameC = new ATMisc.CellMark_struct("{имя точки отбора}"); var MarkC = new ATMisc.CellMark_struct("{показатели}"); var SMC = new ATMisc.CellMark_struct("{концентрации}"); Exchange.AddExchange(NumC.Mark, (Cell) => { NumC.ColumnIndex = Cell.ColumnIndex; NumC.RowIndex = Cell.RowIndex; }, 1); Exchange.AddExchange(NameC.Mark, (Cell) => { NameC.ColumnIndex = Cell.ColumnIndex; NameC.RowIndex = Cell.RowIndex; }, 1); Exchange.AddExchange(MarkC.Mark, (Cell) => { MarkC.ColumnIndex = Cell.ColumnIndex; MarkC.RowIndex = Cell.RowIndex; }, 1); Exchange.AddExchange(SMC.Mark, (Cell) => { SMC.ColumnIndex = Cell.ColumnIndex; SMC.RowIndex = Cell.RowIndex; }, 1); Exchange.Exchange(); if (!NumC.Check() || !NameC.Check() || !MarkC.Check() || !SMC.Check()) { return(false); } if (MarkC.ColumnIndex != SMC.ColumnIndex) { MessageBox.Show("Метки показатели и концентрации должны распологаться в одной колонке", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } if (MarkC.RowIndex > SMC.RowIndex) { MessageBox.Show("Метка показателей добжна распологаться выше метки концентраций", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } if (NumC.RowIndex != NameC.RowIndex || NameC.RowIndex != SMC.RowIndex) { MessageBox.Show("Метки номер, имя точки отбора и концентрации, должны распологаться на одной строке", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } if (Protokol.MarkCount > 1) { var MRow = ByPodrSheet.GetRow(MarkC.RowIndex); var SMRow = ByPodrSheet.GetRow(SMC.RowIndex); var MStyle = MRow.GetCell(MarkC.ColumnIndex).CellStyle; var SMStyle = SMRow.GetCell(SMC.ColumnIndex).CellStyle; ATMisc.BreakColumn(ByPodrSheet, MarkC.ColumnIndex, Protokol.MarkCount); for (int i = 0; i < ByPodrSheet.NumMergedRegions; i++) { var mrg = ByPodrSheet.GetMergedRegion(i); if ((mrg.FirstRow <= SMC.RowIndex && mrg.LastRow >= SMC.RowIndex || (mrg.FirstRow <= MarkC.RowIndex && mrg.LastRow >= MarkC.RowIndex)) && mrg.FirstColumn <= MarkC.ColumnIndex && mrg.LastColumn >= MarkC.ColumnIndex) { ByPodrSheet.RemoveMergedRegion(i); i--; } } for (int i = 0; i < Protokol.MarkCount; i++) { { var Cell = MRow.GetCell(MarkC.ColumnIndex + i); if (Cell == null) { Cell = MRow.CreateCell(MarkC.ColumnIndex + i); } Cell.CellStyle = MStyle; } { var Cell = SMRow.GetCell(SMC.ColumnIndex + i); if (Cell == null) { Cell = SMRow.CreateCell(SMC.ColumnIndex + i); } Cell.CellStyle = MStyle; } } } Exchange.AddColumn(NumC.RowIndex, NumC.ColumnIndex); Exchange.AddColumn(NameC.RowIndex, NameC.ColumnIndex); var Row = ByPodrSheet.GetRow(MarkC.RowIndex); for (int i = 0; i < Protokol.MarkCount; i++) { Row.GetCell(MarkC.ColumnIndex + i).SetCellValue(Protokol.GetMarkName(i) + ", " + Protokol.GetMarkEdType(i)); Exchange.AddColumn(SMC.RowIndex, SMC.ColumnIndex + i); } Exchange.CheckTableColumns(); } for (int i = 0; i < Protokol.TableCount; i++) { var Values = new object[2 + Protokol.MarkCount]; Values[0] = i + 1; Values[1] = Protokol.GetTableName(i); for (int j = 0; j < Protokol.MarkCount; j++) { if (Protokol.IsSpetialOut(j, i, false)) { Values[2 + j] = Protokol.GetSpetialOut(j, i); } else { Values[2 + j] = Protokol.GetMarkAmount(j, i); } } Exchange.SetRow(Values); } break; case data.SGroup.NotGroup1: { ObjectsLocations = Protokol[0].SPointName; UnDeleteSheetName = "Изначальный"; { int Index = WorkBook.GetSheetIndex(UnDeleteSheetName); ByPodrSheet = WorkBook.GetSheetAt(Index); WorkBook.SetSheetName(Index, "Концентрации"); } if (ByPodrSheet == null) { MessageBox.Show("В шаблоне не найден лист \"" + UnDeleteSheetName + "\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } var OEdTypeIndex = new SColumn_struct(-1, null); var OMethodIndex = new SColumn_struct(-1, null); var OMarkNameIndex = new SColumn_struct(-1, null); var NumberIndex = new SColumn_struct(-1, null); var ResultIndex = new SColumn_struct(-1, null); var LimitIndex = new SColumn_struct(-1, null); int RowIndex = -1; { var OEdTypeRowIndex = -1; var OMethodRowIndex = -1; var OMarkNameRowIndex = -1; var NumberRowIndex = -1; var ResultRowIndex = -1; var LimitRowIndex = -1; var ExistColumn = new CellExchange_Class(ByPodrSheet); ExistColumn.AddExchange("{Метка пробы}", "№ " + T.Sample.Rows.Get <string>(Protokol[0].SampleID, C.Sample.Number), 5); if (NormID > 0) { ExistColumn.AddExchange("{Норматив}", T.Norm.Rows.Get <string>(NormID, C.Norm.Name), 5); } ExistColumn.AddExchange("{номер п/п}", (Cell) => { NumberRowIndex = Cell.RowIndex; NumberIndex = new SColumn_struct(Cell); }, 5); ExistColumn.AddExchange("{показатель}", (Cell) => { OMarkNameRowIndex = Cell.RowIndex; OMarkNameIndex = new SColumn_struct(Cell); }, 5); ExistColumn.AddExchange("{ед.изм.}", (Cell) => { OEdTypeRowIndex = Cell.RowIndex; OEdTypeIndex = new SColumn_struct(Cell); }, 5); ExistColumn.AddExchange("{методика}", (Cell) => { OMethodRowIndex = Cell.RowIndex; OMethodIndex = new SColumn_struct(Cell); }, 5); ExistColumn.AddExchange("{результат}", (Cell) => { ResultRowIndex = Cell.RowIndex; ResultIndex = new SColumn_struct(Cell); CopyStyleFromCell(ExpStyle, Cell); }, 5); ExistColumn.AddExchange("{лимит}", (Cell) => { LimitRowIndex = Cell.RowIndex; LimitIndex = new SColumn_struct(Cell); }, 5); ExistColumn.Exchange(0, 25, 0, 25); if (NumberRowIndex == -1 || OMarkNameRowIndex == -1 || OEdTypeRowIndex == -1 || OMethodRowIndex == -1 || ResultRowIndex == -1) { MessageBox.Show("Не все табличные метки найдены.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } if (LimitRowIndex > -1 && LimitRowIndex != NumberRowIndex || NumberRowIndex != OMarkNameRowIndex || OMarkNameRowIndex != OEdTypeRowIndex || OEdTypeRowIndex != OMethodRowIndex || OMethodRowIndex != ResultRowIndex) { MessageBox.Show("Все табличные метки должны распологаться в одной строке.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } if (NormID == 0 && LimitRowIndex > -1) { ByPodrSheet.SetColumnWidth(ResultIndex.Index, ByPodrSheet.GetColumnWidth(ResultIndex.Index) + ByPodrSheet.GetColumnWidth(LimitIndex.Index)); ByPodrSheet.SetColumnHidden(LimitIndex.Index, true); } RowIndex = NumberRowIndex; } ByPodrSheet.ShiftRows(RowIndex, ByPodrSheet.LastRowNum, Protokol.MarkCount - 1); int ONumber = 0; for (int i = 0; i < Protokol.MarkCount; i++) { var Row = ByPodrSheet.CreateRow(RowIndex++); if (RowIndex > -1) { ATMisc.SetValue(Row, ++ONumber, NumberIndex.Index, NumberIndex.Style); } if (LimitIndex.Index > -1) { var Norm = RCache.Marks[Protokol.GetMarkID(i)].GetNorm(Protokol[0].NormID); switch (Norm.NType) { case data.NType.Mark: ATMisc.SetValue(Row, Norm.Range.Range, LimitIndex.Index, LimitIndex.Style); break; case data.NType.PodrV: case data.NType.PodrK: case data.NType.PodrAll: var PIndex = RCache.Marks.Norms.GetPodrIndex(Norm.NormID, T.SPoint.Rows.Get_UnShow <uint>(Protokol[0].SPointID, C.SPoint.Podr)); ATMisc.SetValue(Row, Norm.Station(PIndex).Range, LimitIndex.Index, LimitIndex.Style); break; case data.NType.Volume: var VIndex = RCache.Marks.Norms.GetVolumeIndex(Norm.NormID, T.SPoint.Rows.Get_UnShow <uint>(Protokol[0].SPointID, C.SPoint.Object, C.Object.OLocationFrom)); ATMisc.SetValue(Row, Norm.Volume(VIndex).Range, LimitIndex.Index, LimitIndex.Style); break; } } if (Protokol.IsSpetialOut(i)) { ATMisc.SetValue(Row, Protokol.GetSpetialOut(i), ResultIndex.Index, ResultIndex.Style); } else { ATMisc.SetValue(Row, Protokol.GetMarkAmount(i), ResultIndex.Index, ResultIndex.Style); } ATMisc.SetValue(Row, Protokol.GetMethod(i), OMethodIndex.Index, OMethodIndex.Style); ATMisc.SetValue(Row, Protokol.GetMarkName(i), OMarkNameIndex.Index, OMarkNameIndex.Style); ATMisc.SetValue(Row, Protokol.GetMarkEdType(i), OEdTypeIndex.Index, OEdTypeIndex.Style); } } break; case data.SGroup.Group1: { UnDeleteSheetName = "Изначальный"; { int Index = WorkBook.GetSheetIndex(UnDeleteSheetName); ByPodrSheet = WorkBook.GetSheetAt(Index); WorkBook.SetSheetName(Index, "Концентрации"); } if (ByPodrSheet == null) { MessageBox.Show("В шаблоне не найден лист \"" + UnDeleteSheetName + "\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } var OEdTypeIndex = new SColumn_struct(-1, null); var OMethodIndex = new SColumn_struct(-1, null); var OMarkNameIndex = new SColumn_struct(-1, null); var NumberIndex = new SColumn_struct(-1, null); var ResultIndex = new SColumn_struct(-1, null); var ProbeIndex = new SColumn_struct(-1, null); var LimitIndex = new SColumn_struct(-1, null); int ProbeRowIndex = -1; int RowIndex = -1; { var OEdTypeRowIndex = -1; var OMethodRowIndex = -1; var OMarkNameRowIndex = -1; var NumberRowIndex = -1; var ResultRowIndex = -1; var LimitRowIndex = -1; var ExistColumn = new CellExchange_Class(ByPodrSheet); if (NormID > 0) { ExistColumn.AddExchange("{Норматив}", T.Norm.Rows.Get <string>(NormID, C.Norm.Name), 5); } ExistColumn.AddExchange("{Метка пробы}", (Cell) => { ProbeRowIndex = Cell.RowIndex; ProbeIndex = new SColumn_struct(Cell); }, 5); ExistColumn.AddExchange("{номер п/п}", (Cell) => { NumberRowIndex = Cell.RowIndex; NumberIndex = new SColumn_struct(Cell); }, 5); ExistColumn.AddExchange("{показатель}", (Cell) => { OMarkNameRowIndex = Cell.RowIndex; OMarkNameIndex = new SColumn_struct(Cell); }, 5); ExistColumn.AddExchange("{ед.изм.}", (Cell) => { OEdTypeRowIndex = Cell.RowIndex; OEdTypeIndex = new SColumn_struct(Cell); }, 5); ExistColumn.AddExchange("{методика}", (Cell) => { OMethodRowIndex = Cell.RowIndex; OMethodIndex = new SColumn_struct(Cell); }, 5); ExistColumn.AddExchange("{результат}", (Cell) => { ResultRowIndex = Cell.RowIndex; ResultIndex = new SColumn_struct(Cell); CopyStyleFromCell(ExpStyle, Cell); ExpStyle.DataFormat = WorkBook.CreateDataFormat().GetFormat("0.00E+00"); }, 5); ExistColumn.AddExchange("{лимит}", (Cell) => { LimitRowIndex = Cell.RowIndex; LimitIndex = new SColumn_struct(Cell); }, 5); ExistColumn.Exchange(0, 25, 0, 25); if (ProbeRowIndex == -1 || NumberRowIndex == -1 || OMarkNameRowIndex == -1 || OEdTypeRowIndex == -1 || OMethodRowIndex == -1 || ResultRowIndex == -1) { MessageBox.Show("Не все табличные метки найдены.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } if (LimitRowIndex > -1 && LimitRowIndex != NumberRowIndex || NumberRowIndex != OMarkNameRowIndex || OMarkNameRowIndex != OEdTypeRowIndex || OEdTypeRowIndex != OMethodRowIndex || OMethodRowIndex != ResultRowIndex) { MessageBox.Show("Все табличные метки должны распологаться в одной строке.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } if (LimitRowIndex > -1) { ByPodrSheet.SetColumnWidth(ResultIndex.Index, ByPodrSheet.GetColumnWidth(ResultIndex.Index) + ByPodrSheet.GetColumnWidth(LimitIndex.Index)); ByPodrSheet.SetColumnHidden(LimitIndex.Index, true); } RowIndex = NumberRowIndex; } ByPodrSheet.ShiftRows(RowIndex, ByPodrSheet.LastRowNum, Protokol.MarkCount - 1); int Width = ByPodrSheet.GetColumnWidth(ResultIndex.Index) / Protokol.SampleCount; ByPodrSheet.AddMergedRegion(new CellRangeAddress(RowIndex - 2, RowIndex - 2, ResultIndex.Index, ResultIndex.Index + Protokol.SampleCount - 1)); { var Row = ByPodrSheet.GetRow(ProbeRowIndex); //проверяю одинаковые ли типы воды, если да, тогда проверяю одинаковые ли места, если нет то пишу места, если да, то пишу тип for (int j = 1; j < Protokol.SampleCount; j++) { if (T.Object.Rows.Get_UnShow <uint>(Protokol[j].ObjectID, C.Object.OType) != T.Object.Rows.Get_UnShow <uint>(Protokol[0].ObjectID, C.Object.OType)) { goto UseOType; } } for (int j = 1; j < Protokol.SampleCount; j++) { if (T.Object.Rows.Get_UnShow <uint>(Protokol[j].ObjectID, C.Object.OLocationTo) == T.Object.Rows.Get_UnShow <uint>(Protokol[0].ObjectID, C.Object.OLocationTo)) { goto UseOType; } } for (int j = 0; j < Protokol.SampleCount; j++) { ByPodrSheet.SetColumnWidth(ResultIndex.Index + j, Width); ATMisc.SetValue(Row, T.Object.Rows.Get <string>(Protokol[j].ObjectID, C.Object.OLocationTo, C.OLocation.Name), ProbeIndex.Index + j, ProbeIndex.Style); } goto IFilled; UseOType :; for (int j = 0; j < Protokol.SampleCount; j++) { ByPodrSheet.SetColumnWidth(ResultIndex.Index + j, Width); ATMisc.SetValue(Row, T.Object.Rows.Get <string>(Protokol[j].ObjectID, C.Object.OType, C.OType.Name) + " №" + Protokol[j].Number.ToString(), ProbeIndex.Index + j, ProbeIndex.Style); } IFilled :; { //костыльности вот прям тут. т.к. не особенно общая вещь делается: клепается объединение ячеек там где сейчас "результаты испытаний" var PrevRow = ByPodrSheet.GetRow(RowIndex - 2); PrevRow.GetCell(ResultIndex.Index).CellStyle = StyleLTD_CC; for (int j = Protokol.SampleCount - 2; j > 0; j--) { PrevRow.CreateCell(ResultIndex.Index + j).CellStyle = StyleTD_CC; } PrevRow.CreateCell(ResultIndex.Index + Protokol.SampleCount - 1).CellStyle = StyleRTD_CC; } int MergeCount = ByPodrSheet.NumMergedRegions; for (int i = 0; i < MergeCount; i++) { var Merge = ByPodrSheet.GetMergedRegion(i); if (Merge.LastColumn == ResultIndex.Index) { ByPodrSheet.RemoveMergedRegion(i); MergeCount--; i--; ByPodrSheet.AddMergedRegion(new CellRangeAddress(Merge.FirstRow, Merge.LastRow, Merge.FirstColumn, ResultIndex.Index + Protokol.SampleCount - 1)); } } } int TNumber = 0; for (int i = 0; i < Protokol.MarkCount; i++) { var Row = ByPodrSheet.CreateRow(RowIndex++); if (LimitIndex.Index > -1) { var Norm = RCache.Marks[Protokol.GetMarkID(i)].GetNorm(Protokol.GetNormID(i)); switch (Norm.NType) { case data.NType.Mark: ATMisc.SetValue(Row, Norm.Range.Range, LimitIndex.Index, LimitIndex.Style); break; case data.NType.PodrV: case data.NType.PodrK: case data.NType.PodrAll: var PIndex = RCache.Marks.Norms.GetPodrIndex(Norm.NormID, T.SPoint.Rows.Get_UnShow <uint>(Protokol[0].SPointID, C.SPoint.Podr)); ATMisc.SetValue(Row, Norm.Station(PIndex).Range, LimitIndex.Index, LimitIndex.Style); break; case data.NType.Volume: var VIndex = RCache.Marks.Norms.GetVolumeIndex(Norm.NormID, T.SPoint.Rows.Get_UnShow <uint>(Protokol[0].SPointID, C.SPoint.Object, C.Object.OLocationTo)); ATMisc.SetValue(Row, Norm.Volume(VIndex).Range, LimitIndex.Index, LimitIndex.Style); break; } for (int j = 0; j < Protokol.TableCount; j++) { if (Protokol.IsSpetialOut(i, j, true)) { ATMisc.SetValue(Row, Protokol.GetSpetialOut(i, j), ResultIndex.Index + j, ResultIndex.Style); } else { ATMisc.SetValue(Row, Protokol.GetMarkAmount(i, j), ResultIndex.Index + j, ResultIndex.Style); } } } else { for (int j = 0; j < Protokol.TableCount; j++) { if (Protokol.IsSpetialOut(i, j)) { ATMisc.SetValue(Row, Protokol.GetSpetialOut(i, j), ResultIndex.Index + j, ResultIndex.Style); } else { ATMisc.SetValue(Row, Protokol.GetMarkAmount(i, j), ResultIndex.Index + j, ResultIndex.Style); } } } ATMisc.SetValue(Row, ++TNumber, NumberIndex.Index, NumberIndex.Style); ATMisc.SetValue(Row, Protokol.GetMethod(i), OMethodIndex.Index, OMethodIndex.Style); ATMisc.SetValue(Row, Protokol.GetMarkName(i), OMarkNameIndex.Index, OMarkNameIndex.Style); ATMisc.SetValue(Row, Protokol.GetMarkEdType(i), OEdTypeIndex.Index, OEdTypeIndex.Style); } } break; default: throw new Exception("Неизвестный тип протокола"); } for (int i = 0; i < WorkBook.NumberOfSheets; i++) { if (WorkBook.GetSheetAt(i).SheetName.ToLower() != "заголовок" && WorkBook.GetSheetAt(i).SheetName.ToLower() != "концентрации") { WorkBook.RemoveSheetAt(i); i--; } } string PeopleNames; { var Ppls = new List <uint>(); for (int i = 0; i < Protokol.SampleCount; i++) { for (int j = 0; j < Ppls.Count; j++) { if (Ppls[j] == Protokol[i].PeopleID) { goto Finded; } } Ppls.Add(Protokol[i].PeopleID); Finded :; } PeopleNames = Misc.GetShortFIO(Ppls[0]); for (int i = 1; i < Ppls.Count; i++) { PeopleNames += ", " + Misc.GetShortFIO(Ppls[i]); } } string DateO; string DateP; var DTMin = T.Sample.Rows.Get <int>(Protokol[0].SampleID, C.Sample.CYMD); for (int i = 1; i < Protokol.SampleCount; i++) { if (DTMin > T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.CYMD)) { DTMin = T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.CYMD); } } var DTMax = T.Sample.Rows.Get <int>(Protokol[0].SampleID, C.Sample.CYMD); for (int i = 1; i < Protokol.SampleCount; i++) { if (DTMax < T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.CYMD)) { DTMax = T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.CYMD); } } if (DTMax == DTMin) { DateO = ATMisc.GetDateTime(DTMax).ToShortDateString(); } else { DateO = ATMisc.GetDateTime(DTMin).ToShortDateString() + " - " + ATMisc.GetDateTime(DTMax).ToShortDateString(); } DTMin = T.Sample.Rows.Get <int>(Protokol[0].SampleID, C.Sample.AYMD); for (int i = 1; i < Protokol.SampleCount; i++) { if (DTMin > T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.AYMD)) { DTMin = T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.AYMD); } } DTMax = T.Sample.Rows.Get <int>(Protokol[0].SampleID, C.Sample.AYMD); for (int i = 1; i < Protokol.SampleCount; i++) { if (DTMax < T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.AYMD)) { DTMax = T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.AYMD); } } if (DTMax == DTMin) { DateP = ATMisc.GetDateTime(DTMax).ToShortDateString(); } else { DateP = ATMisc.GetDateTime(DTMin).ToShortDateString() + " - " + ATMisc.GetDateTime(DTMax).ToShortDateString(); } var DT = Protokol.Date; GetProtokolsExchanges(TitleSheet , ATMisc.GetDateTimeFromYM(Protokol.Parent.YM).Year , Protokol.Number.ToString() + "-" + T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) + " - " + DT.Month.ToString() + "/" + DT.Year.ToString() , Protokol.Objects , Protokol.Objects , Protokol.PTypes , ObjectsLocations , DateO , DateP , Protokol.StrTime , PeopleNames , Protokol.Causes , Protokol.Numbers , DT.Day.ToString() , ATMisc.GetMonthName2(DT.Month) , DT.Month.ToString() , RCache.PSG.GetMethodName(Protokol.PodrID) , T.PaPoS.Rows.Get <string>(Protokol.PaPoSID, C.PaPoS.Name) , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.FllName) , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.Contact) , Protokol.Act).Exchange(0, 25, 0, 25); { var Exchanges = new CellExchange_Class(TitleSheet); Exchanges.ClearExchanges(); Exchanges.AddColumn("{имя свойства}"); Exchanges.AddColumn("{ед. свойства}"); Exchanges.AddColumn("{значение свойства}"); } { var Exchanges = new CellExchange_Class(ByPodrSheet); Exchanges.AddExchange("{должность ответственного}", T.People.Rows.Get <string>(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Protokol[0].PodrID, C.Podr.PSG)), C.People.Prfssn, C.Prfssn.Name), 5); Exchanges.AddExchange("{ФИО ответственного}", Misc.GetShortFIO(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Protokol[0].PodrID, C.Podr.PSG))), 5); Exchanges.AddExchange("{Номер протокола}", Protokol.Number.ToString() + "-" + T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) + " - " + DT.Month.ToString() + "/" + DT.Year.ToString(), 5); Exchanges.AddExchange("{Дата}", DT.ToShortDateString(), 5); SetResp(Exchanges, Protokol.PodrID, data.TResp.LaboratoryProtokol); } return(SaveExcel(WorkBook, NewFileName, Open)); } else { if (Open) { System.Diagnostics.Process.Start(NewFileName); } return(true); } }
protected override void internalStart() { book = TemplateStorage.WorkBook; if (!CreateStyle()) { return; } string ListName = "621"; #region 621 Resolution resolution = PollutionBase_Class.AllResolution.First(x => x.CurtName.Contains(ListName)); if (obj.CanResolution(resolution.ID)) { GeneralSumma = new List <decimal>(); var index = book.GetSheetIndex("Расчёт"); sheet = book.CloneSheet(index); book.SetSheetName(book.NumberOfSheets - 1, ListName); Substitute = new CellExchange_Class(sheet); LoadTextTemplate(sheet, ListName); ClientLoad(); Table621_1(resolution); if (!Table621_2(resolution)) { Substitute.AddExchange(mark.blok2, e => e.Row.ZeroHeight = true, 0); } else { Substitute.AddExchange(mark.blok2, "", 0); } ResizeHeight(sheet, 3, sheet.LastRowNum); Substitute.AddExchange(mark.pay, GeneralSumma.Sum().ToMoney(), 1); R621 = GeneralSumma.Sum() > AdditionnTable.GetPeriod.MinLimits; Substitute.Exchange(); ClearRowFromMark(sheet, mark.job); } #endregion #region 644 ListName = "644"; resolution = PollutionBase_Class.AllResolution.First(x => x.CurtName.Contains(ListName)); if (obj.CanResolution(resolution.ID)) { GeneralSumma = new List <decimal>(); sheet = book.CloneSheet(book.GetSheetIndex("Расчёт")); book.SetSheetName(book.NumberOfSheets - 1, ListName); Substitute = new CellExchange_Class(sheet); LoadTextTemplate(sheet, ListName); ClientLoad(); if (Table644(resolution)) { Substitute.AddExchange(mark.pay, GeneralSumma.Sum().ToMoney(), 1); R644 = GeneralSumma.Sum() > AdditionnTable.GetPeriod.MinLimits; Substitute.Exchange(); ClearRowFromMark(sheet, mark.job); } else { book.RemoveSheetAt(book.NumberOfSheets - 1); } } #endregion book.RemoveSheetAt(book.GetSheetIndex("Расчёт")); Letter(); Print("Расчёты платы", "Расчёт платы", EPathPrint.Documents); }
public static bool OtchProtokolToxicity1(Protokols_class.SGroup_class.Protokol_class Protokol, bool CreateNew = true, bool Open = true) { if (Protokol.SampleCount != 1) { MessageBox.Show("Не верное количество замеров в протоколе:" + Protokol.SampleCount.ToString() + ". Должен быть 1", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } string NewFileName; { int Month, Year; ATMisc.GetYearMonthFromYM(Employe_Form.SPoints.YM, out Year, out Month); { NewFileName = Application.StartupPath + "\\Отчеты\\"; if (!Directory.Exists(NewFileName)) { Directory.CreateDirectory(NewFileName); } NewFileName += T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) + "\\"; if (!Directory.Exists(NewFileName)) { Directory.CreateDirectory(NewFileName); } NewFileName += ATMisc.GetMonthName1(Month) + "\\"; if (!Directory.Exists(NewFileName)) { Directory.CreateDirectory(NewFileName); } } NewFileName += ProtokolFileName(Protokol); } if (CreateNew || !File.Exists(NewFileName)) { var WorkBook = ATMisc.GetGenericExcel(Protokol.TemplateFileName()); if (WorkBook == null) { return(false); } var TitleSheet = WorkBook.GetSheet("Заголовок"); NPOI.SS.UserModel.ISheet ByPodrSheet; if (TitleSheet == null) { MessageBox.Show("В шаблоне не найден лист \"Заголовок\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } if (Protokol.MarkCount == 0) { MessageBox.Show("Заполненые показатели не найдены.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } if (Protokol.MarkCount != 2) { MessageBox.Show("Не верное количество показателей.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } var Font = WorkBook.CreateFont(); Font.Color = NPOI.HSSF.Util.HSSFColor.OliveGreen.Index; Font.IsStrikeout = false; Font.FontHeightInPoints = 11; Font.FontName = "Times New Roman"; Font.Color = short.MaxValue; var StyleLRTD_CC = WorkBook.CreateCellStyle(); StyleLRTD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_CC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_CC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleLRTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLRTD_CC.SetFont(Font); StyleLRTD_CC.WrapText = true; var ExpStyle = WorkBook.CreateCellStyle(); ExpStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; ExpStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; ExpStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; ExpStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; ExpStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; ExpStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; ExpStyle.SetFont(Font); ExpStyle.WrapText = true; ExpStyle.DataFormat = WorkBook.CreateDataFormat().GetFormat("0.00E+00"); var StyleLRTD_LC = WorkBook.CreateCellStyle(); StyleLRTD_LC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_LC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_LC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_LC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_LC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; StyleLRTD_LC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLRTD_LC.SetFont(Font); StyleLRTD_LC.WrapText = true; var StyleLRD_CC = WorkBook.CreateCellStyle(); StyleLRD_CC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRD_CC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleLRD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLRD_CC.SetFont(Font); StyleLRD_CC.WrapText = true; var StyleLRT_CC = WorkBook.CreateCellStyle(); StyleLRT_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRT_CC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRT_CC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRT_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleLRT_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLRT_CC.SetFont(Font); StyleLRT_CC.WrapText = true; var StyleRTD_CC = WorkBook.CreateCellStyle(); StyleRTD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleRTD_CC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleRTD_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleRTD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleRTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleRTD_CC.SetFont(Font); StyleRTD_CC.WrapText = true; var StyleLTD_CC = WorkBook.CreateCellStyle(); StyleLTD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleLTD_CC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLTD_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleLTD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleLTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLTD_CC.SetFont(Font); StyleLTD_CC.WrapText = true; var StyleTD_CC = WorkBook.CreateCellStyle(); StyleTD_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleTD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleTD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleTD_CC.SetFont(Font); StyleTD_CC.WrapText = true; var Objects = Protokol.Objects; var ProbeType = T.PType.Rows.Get <string>(Protokol[0].PTypeID, C.PType.Name); var Location = Protokol.ObjectsLocations; var Cause = Protokol.SCause; string UnDeleteSheetName; var AddInSheetName = T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.PSG, C.PSG.Name); Location = T.SPoint.Rows.Get <string>(Protokol[0].SPointID, C.SPoint.Name); var Probes = Protokol.Numbers; var NormID = Protokol[0].NormID; UnDeleteSheetName = "Концентрации"; { int Index = WorkBook.GetSheetIndex(UnDeleteSheetName); ByPodrSheet = WorkBook.GetSheetAt(Index); WorkBook.SetSheetName(Index, "Концентрации"); } if (ByPodrSheet == null) { MessageBox.Show("В шаблоне не найден лист \"" + UnDeleteSheetName + "\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } var Cells = new ATMisc.CellMark_struct[Protokol.MarkCount]; var Exchange = new CellExchange_Class(ByPodrSheet); /*for (int i = 0; i < Protokol.MarkCount; i++) * { * Cells[i] = new ATMisc.CellMark_struct("{Оценка " + Protokol.GetMarkName(i) + '}'); * * int Index = i; * Exchange.AddExchange(Cells[i].Mark, (Cell) => * { Cells[Index].ColumnIndex = Cell.ColumnIndex; Cells[Index].RowIndex = Cell.RowIndex; }, 1); * }*/ Cells[0] = new ATMisc.CellMark_struct("{4 дня " + Protokol.GetMarkName(0) + '}'); Exchange.AddExchange(Cells[0].Mark, (Cell) => { Cells[0].ColumnIndex = Cell.ColumnIndex; Cells[0].RowIndex = Cell.RowIndex; }, 1); Cells[1] = new ATMisc.CellMark_struct("{3 дня " + Protokol.GetMarkName(1) + '}'); Exchange.AddExchange(Cells[1].Mark, (Cell) => { Cells[1].ColumnIndex = Cell.ColumnIndex; Cells[1].RowIndex = Cell.RowIndex; }, 1); if (Exchange.Exchange()) { for (int i = 0; i < Cells.Length; i++) { if (!Cells[i].Check()) { return(false); } } var tmpDT = ATMisc.GetDateTime(Protokol[0].AYMD); var Tm = new DataBase.Time(Protokol.Time); tmpDT = tmpDT.AddDays(4).AddHours(Tm.Hours).AddMinutes((Protokol.SGroup == data.SGroup.Toxicity2 ? Tm.Minutes + 4 * 60 : Tm.Minutes)); //if (tmpDT.DayOfWeek == DayOfWeek.Saturday || tmpDT.DayOfWeek == DayOfWeek.Sunday) //{ throw new Exception("День окончания проведения испытаний приходится на выходной."); } ByPodrSheet.GetRow(Cells[0].RowIndex).GetCell(Cells[0].ColumnIndex).SetCellValue(ATMisc.GetDateTime(Protokol[0].AYMD).ToShortDateString() + '-' + tmpDT.ToShortDateString() + ' ' + (tmpDT.Hour > 9 ? tmpDT.Hour.ToString() : '0' + tmpDT.Hour.ToString()) + ':' + (tmpDT.Minute > 9 ? tmpDT.Minute.ToString() : '0' + tmpDT.Minute.ToString())); tmpDT = ATMisc.GetDateTime(Protokol[0].AYMD).AddDays(3).AddHours(Tm.Hours).AddMinutes((Protokol.SGroup == data.SGroup.Toxicity2 ? Tm.Minutes + 4 * 60 : Tm.Minutes)); //if (tmpDT.DayOfWeek == DayOfWeek.Saturday || tmpDT.DayOfWeek == DayOfWeek.Sunday) //{ throw new Exception("День окончания проведения испытаний приходится на выходной."); } ByPodrSheet.GetRow(Cells[1].RowIndex).GetCell(Cells[1].ColumnIndex).SetCellValue(ATMisc.GetDateTime(Protokol[0].AYMD).ToShortDateString() + '-' + tmpDT.ToShortDateString() + ' ' + (tmpDT.Hour > 9 ? tmpDT.Hour.ToString() : '0' + tmpDT.Hour.ToString()) + ':' + (tmpDT.Minute > 9 ? tmpDT.Minute.ToString() : '0' + tmpDT.Minute.ToString())); } for (int i = WorkBook.NumberOfSheets - 1; i > -1; i--) { if (WorkBook.GetSheetAt(i).SheetName.ToLower() != "заголовок" && WorkBook.GetSheetAt(i).SheetName.ToLower() != "концентрации") { WorkBook.RemoveSheetAt(i); } } string PeopleNames; { var Ppls = new List <uint>(); for (int i = 0; i < Protokol.SampleCount; i++) { for (int j = 0; j < Ppls.Count; j++) { if (Ppls[j] == Protokol[i].PeopleID) { goto Finded; } } Ppls.Add(Protokol[i].PeopleID); Finded :; } PeopleNames = Misc.GetShortFIO(Ppls[0]); for (int i = 1; i < Ppls.Count; i++) { PeopleNames += ", " + Misc.GetShortFIO(Ppls[i]); } } var DT = Protokol.Date; var ProtokolNum = ProtokolNumber(Protokol); GetProtokolsExchanges(TitleSheet , DT.Year , ProtokolNum , Objects , Objects , ProbeType , Location , Protokol.DateOstr , Protokol.DateP , Protokol.StrTime , PeopleNames , Cause , Probes , DT.Day.ToString() , ATMisc.GetMonthName2(DT.Month) , DT.Month.ToString() , RCache.PSG.GetMethodName(data.PSG.Income) , T.PaPoS.Rows.Get <string>(Protokol.PaPoSID, C.PaPoS.Name) , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.FllName) , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.Contact) , Protokol.Act).Exchange(0, 25, 0, 25); var Exchanges = new CellExchange_Class(TitleSheet); Exchanges.ClearExchanges(); Exchanges.AddColumn("{имя свойства}"); Exchanges.AddColumn("{ед. свойства}"); Exchanges.AddColumn("{значение свойства}"); if (Exchanges.CheckTableColumns()) { for (int i = 0; i < Protokol[0].TCSCount; i++) { var Values = new object[3]; Values[0] = Protokol[0].TCSName(i); Values[1] = Protokol[0].TCSEdType(i); Values[2] = Protokol[0].TCSValue(i); Exchanges.SetRow(Values); } } Exchanges = new CellExchange_Class(ByPodrSheet); Exchanges.AddExchange("{должность ответственного}", T.People.Rows.Get <string>(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Protokol[0].PodrID, C.Podr.PSG)), C.People.Prfssn, C.Prfssn.Name), 5); Exchanges.AddExchange("{ФИО ответственного}", Misc.GetShortFIO(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Protokol[0].PodrID, C.Podr.PSG))), 5); Exchanges.AddExchange("{Номер протокола}", ProtokolNum, 5); Exchanges.AddExchange("{Дата}", DT.ToShortDateString(), 5); SetResp(Exchanges, Protokol.PodrID, data.TResp.LaboratoryProtokol); return(SaveExcel(WorkBook, NewFileName, Open)); } else { if (Open) { System.Diagnostics.Process.Start(NewFileName); } return(true); } }
/// <summary>Получить ответственных по типу ответственности для подразделения</summary> static void SetResp(CellExchange_Class Exchange, uint PodrID, data.TResp RespType) { var Prffn = new SColumn_struct(-1, null); var FIO = new SColumn_struct(-1, null); int RowIndex; { int PrffnRowIndex = -1; int FIORowIndex = -1; Exchange.AddExchange("{Профессии ответственных по подразделению}", Cell => { Prffn = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle); PrffnRowIndex = Cell.RowIndex; }, 5); Exchange.AddExchange("{ФИО ответственных по подразделению}", Cell => { FIO = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle); FIORowIndex = Cell.RowIndex; }, 5); Exchange.Exchange(0, 50, 0, Exchange.sheet.LastRowNum + 1); if (PrffnRowIndex == FIORowIndex && FIORowIndex < 0) { return; } if (PrffnRowIndex > -1 && FIORowIndex > -1 && FIORowIndex != PrffnRowIndex) { return; } RowIndex = PrffnRowIndex; } CellRangeAddress FIOMerge = null; CellRangeAddress PrffnMerge = null; G.Resp.QUERRY() .SHOW.WHERE .ARC(C.Resp.PodrPpl, C.PodrPpl.Podr).EQUI.BV(PodrID) .AND.C(C.Resp.TResp, (uint)RespType) .DO(); if (G.Resp.Rows.Count > 0) { for (int i = 0; i < Exchange.sheet.NumMergedRegions; i++) { var Merge = Exchange.sheet.GetMergedRegion(i); if (Merge.FirstRow <= RowIndex && Merge.LastRow >= RowIndex) { if (Merge.FirstColumn <= FIO.Index && Merge.LastColumn >= FIO.Index) { FIOMerge = Merge; } else if (Merge.FirstColumn <= Prffn.Index && Merge.LastColumn >= Prffn.Index) { PrffnMerge = Merge; } } } Exchange.sheet.ShiftRows(RowIndex + 1, Exchange.sheet.LastRowNum, G.Resp.Rows.Count - 1); G.Resp.Sort((it1, it2) => { var ret1 = T.Resp.Rows.Get_UnShow <uint>(it1.ID, C.Resp.PodrPpl, C.PodrPpl.People, C.People.Prfssn, C.Prfssn.PnMean) .CompareTo(T.Resp.Rows.Get_UnShow <uint>(it2.ID, C.Resp.PodrPpl, C.PodrPpl.People, C.People.Prfssn, C.Prfssn.PnMean)); return(ret1 == 0 ? it1.ID.CompareTo(it2.ID) : ret1); }); if (Prffn.Index > -1) { var Row = Exchange.sheet.GetRow(RowIndex); var Cell = Row.GetCell(Prffn.Index); Cell.SetCellValue(G.Resp.Rows.Get <string>(0, C.Resp.PodrPpl, C.PodrPpl.People, C.People.Prfssn, C.Prfssn.Name)); } if (FIO.Index > -1) { var Row = Exchange.sheet.GetRow(RowIndex); var Cell = Row.GetCell(FIO.Index); Cell.SetCellValue(Misc.GetShortFIO(G.Resp.Rows.Get_UnShow <uint>(0, C.Resp.PodrPpl, C.PodrPpl.People))); } for (int i = 1; i < G.Resp.Rows.Count; i++) { var Row = Exchange.sheet.CreateRow(RowIndex + i); if (Prffn.Index > -1) { var Cell = Row.CreateCell(Prffn.Index); Cell.CellStyle = Prffn.Style; Cell.SetCellValue(G.Resp.Rows.Get <string>(i, C.Resp.PodrPpl, C.PodrPpl.People, C.People.Prfssn, C.Prfssn.Name)); if (PrffnMerge != null) { Exchange.sheet.AddMergedRegion(new CellRangeAddress(Row.RowNum, Row.RowNum, PrffnMerge.FirstColumn, PrffnMerge.LastColumn)); } } if (FIO.Index > -1) { var Cell = Row.CreateCell(FIO.Index); Cell.CellStyle = FIO.Style; Cell.SetCellValue(Misc.GetShortFIO(G.Resp.Rows.Get_UnShow <uint>(i, C.Resp.PodrPpl, C.PodrPpl.People))); if (FIOMerge != null) { Exchange.sheet.AddMergedRegion(new CellRangeAddress(Row.RowNum, Row.RowNum, FIOMerge.FirstColumn, FIOMerge.LastColumn)); } } } } else { Exchange.sheet.ShiftRows(RowIndex + 1, Exchange.sheet.LastRowNum, G.Resp.Rows.Count - 1); } }
public static bool OtchProtokolAquaAurat_KOCA(Protokols_class.SGroup_class.Protokol_class Protokol, bool CreateNew = true, bool Open = true) { if (Protokol.SampleCount != 1) { MessageBox.Show("Не верное количество замеров в протоколе:" + Protokol.SampleCount.ToString() + ". Должен быть 1", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } { var MsgErr = ""; for (int i = 0; i < Protokol.MarkCount; i++) { var PAMIndex = -1; for (int j = 0; j < Protokol.SampleCount; j++) { if (Protokol[j][i].LocalAlow && Protokol[j][i].Method.Length > 0) { if (PAMIndex < 0) { PAMIndex = j; } else if (Protokol[j][i].Method != Protokol[PAMIndex][i].Method) { MsgErr += '\n' + Protokol[j][i].Mark + " имеет различные методы у нормативов " + T.Object.Rows.Get <string>(Protokol[j].ObjectID, C.Object.Norm, C.Norm.Name) + " и " + T.Object.Rows.Get <string>(Protokol[PAMIndex].ObjectID, C.Object.Norm, C.Norm.Name); } } } } if (MsgErr.Length > 0) { MessageBox.Show(MsgErr, "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } } string NewFileName; { int Month, Year; ATMisc.GetYearMonthFromYM(Employe_Form.SPoints.YM, out Year, out Month); { NewFileName = Application.StartupPath + "\\Отчеты\\"; if (!Directory.Exists(NewFileName)) { Directory.CreateDirectory(NewFileName); } NewFileName += T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) + "\\"; if (!Directory.Exists(NewFileName)) { Directory.CreateDirectory(NewFileName); } NewFileName += ATMisc.GetMonthName1(Month) + "\\"; if (!Directory.Exists(NewFileName)) { Directory.CreateDirectory(NewFileName); } } NewFileName += ProtokolFileName(Protokol); } if (CreateNew || !File.Exists(NewFileName)) { var WorkBook = ATMisc.GetGenericExcel(Protokol.TemplateFileName()); if (WorkBook == null) { return(false); } var TitleSheet = WorkBook.GetSheet("Заголовок"); NPOI.SS.UserModel.ISheet ByPodrSheet; if (TitleSheet == null) { MessageBox.Show("В шаблоне не найден лист \"Заголовок\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } if (Protokol.MarkCount == 0) { MessageBox.Show("Заполненые показатели не найдены.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } var Font = WorkBook.CreateFont(); Font.Color = NPOI.HSSF.Util.HSSFColor.OliveGreen.Index; Font.IsStrikeout = false; Font.FontHeightInPoints = 11; Font.FontName = "Times New Roman"; Font.Color = short.MaxValue; var StyleLRTD_CC = WorkBook.CreateCellStyle(); StyleLRTD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_CC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_CC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleLRTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLRTD_CC.SetFont(Font); StyleLRTD_CC.WrapText = true; var ExpStyle = WorkBook.CreateCellStyle(); ExpStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; ExpStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; ExpStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; ExpStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; ExpStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; ExpStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; ExpStyle.SetFont(Font); ExpStyle.WrapText = true; ExpStyle.DataFormat = WorkBook.CreateDataFormat().GetFormat("0.00E+00"); var StyleLRTD_LC = WorkBook.CreateCellStyle(); StyleLRTD_LC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_LC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_LC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_LC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRTD_LC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; StyleLRTD_LC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLRTD_LC.SetFont(Font); StyleLRTD_LC.WrapText = true; var StyleLRD_CC = WorkBook.CreateCellStyle(); StyleLRD_CC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRD_CC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleLRD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLRD_CC.SetFont(Font); StyleLRD_CC.WrapText = true; var StyleLRT_CC = WorkBook.CreateCellStyle(); StyleLRT_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRT_CC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRT_CC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleLRT_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleLRT_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLRT_CC.SetFont(Font); StyleLRT_CC.WrapText = true; var StyleRTD_CC = WorkBook.CreateCellStyle(); StyleRTD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleRTD_CC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; StyleRTD_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleRTD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleRTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleRTD_CC.SetFont(Font); StyleRTD_CC.WrapText = true; var StyleLTD_CC = WorkBook.CreateCellStyle(); StyleLTD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleLTD_CC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; StyleLTD_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleLTD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleLTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleLTD_CC.SetFont(Font); StyleLTD_CC.WrapText = true; var StyleTD_CC = WorkBook.CreateCellStyle(); StyleTD_CC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; StyleTD_CC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; StyleTD_CC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; StyleTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; StyleTD_CC.SetFont(Font); StyleTD_CC.WrapText = true; var Objects = Protokol[0].SPointName + ", " + Protokol.Objects; var ProbeType = T.PType.Rows.Get <string>(Protokol[0].PTypeID, C.PType.Name); var Location = Protokol.ObjectsLocations; var Cause = Protokol.SCause; string UnDeleteSheetName; var AddInSheetName = T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.PSG, C.PSG.Name); //Location = T.Object.Rows.Get<string>(Protokol[0].ObjectID, C.Object.OLocationFrom, C.OLocation.Name); Location = T.SPoint.Rows.Get <string>(Protokol[0].SPointID, C.SPoint.Name); var Probes = Protokol.Numbers; var NormID = Protokol[0].NormID; UnDeleteSheetName = "Концентрации"; { int Index = WorkBook.GetSheetIndex(UnDeleteSheetName); ByPodrSheet = WorkBook.GetSheetAt(Index); WorkBook.SetSheetName(Index, "Концентрации"); } if (ByPodrSheet == null) { MessageBox.Show("В шаблоне не найден лист \"" + UnDeleteSheetName + "\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } var OEdTypeIndex = new SColumn_struct(-1, null); var OMethodIndex = new SColumn_struct(-1, null); var OMarkNameIndex = new SColumn_struct(-1, null); var NumberIndex = new SColumn_struct(-1, null); var ResultIndex = new SColumn_struct(-1, null); var LimitIndex = new SColumn_struct(-1, null); int RowIndex = -1; { var OEdTypeRowIndex = -1; var OMethodRowIndex = -1; var OMarkNameRowIndex = -1; var NumberRowIndex = -1; var ResultRowIndex = -1; var LimitRowIndex = -1; var ExistColumn = new CellExchange_Class(ByPodrSheet); ExistColumn.AddExchange("{Метка пробы}", "№ " + T.Sample.Rows.Get <string>(Protokol[0].SampleID, C.Sample.Number), 5); if (NormID > 0) { ExistColumn.AddExchange("{Норматив}", T.Norm.Rows.Get <string>(NormID, C.Norm.Name), 5); } ExistColumn.AddExchange("{номер п/п}", (Cell) => { NumberRowIndex = Cell.RowIndex; NumberIndex = new SColumn_struct(Cell); }, 5); ExistColumn.AddExchange("{показатель}", (Cell) => { OMarkNameRowIndex = Cell.RowIndex; OMarkNameIndex = new SColumn_struct(Cell); }, 5); ExistColumn.AddExchange("{ед.изм.}", (Cell) => { OEdTypeRowIndex = Cell.RowIndex; OEdTypeIndex = new SColumn_struct(Cell); }, 5); ExistColumn.AddExchange("{методика}", (Cell) => { OMethodRowIndex = Cell.RowIndex; OMethodIndex = new SColumn_struct(Cell); }, 5); ExistColumn.AddExchange("{результат}", (Cell) => { ResultRowIndex = Cell.RowIndex; ResultIndex = new SColumn_struct(Cell); CopyStyleFromCell(ExpStyle, Cell); }, 5); ExistColumn.AddExchange("{лимит}", (Cell) => { LimitRowIndex = Cell.RowIndex; LimitIndex = new SColumn_struct(Cell); }, 5); ExistColumn.Exchange(0, 25, 0, 25); if (NumberRowIndex == -1 || OMarkNameRowIndex == -1 || OEdTypeRowIndex == -1 || OMethodRowIndex == -1 || ResultRowIndex == -1) { MessageBox.Show("Не все табличные метки найдены.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } if (LimitRowIndex > -1 && LimitRowIndex != NumberRowIndex || NumberRowIndex != OMarkNameRowIndex || OMarkNameRowIndex != OEdTypeRowIndex || OEdTypeRowIndex != OMethodRowIndex || OMethodRowIndex != ResultRowIndex) { MessageBox.Show("Все табличные метки должны распологаться в одной строке.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } if (NormID == 0 && LimitRowIndex > -1) { ByPodrSheet.SetColumnWidth(ResultIndex.Index, ByPodrSheet.GetColumnWidth(ResultIndex.Index) + ByPodrSheet.GetColumnWidth(LimitIndex.Index)); ByPodrSheet.SetColumnHidden(LimitIndex.Index, true); } RowIndex = NumberRowIndex; } ByPodrSheet.ShiftRows(RowIndex, ByPodrSheet.LastRowNum, Protokol.MarkCount - 1); int ONumber = 0; for (int i = 0; i < Protokol.MarkCount; i++) { var Row = ByPodrSheet.CreateRow(RowIndex++); if (RowIndex > -1) { ATMisc.SetValue(Row, ++ONumber, NumberIndex.Index, NumberIndex.Style); } if (LimitIndex.Index > -1) { var Norm = RCache.Marks[Protokol.GetMarkID(i)].GetNorm(Protokol.GetNormID(i)); switch (Norm.NType) { case data.NType.Mark: ATMisc.SetValue(Row, Norm.Range.Range, LimitIndex.Index, LimitIndex.Style); break; case data.NType.PodrV: case data.NType.PodrK: case data.NType.PodrAll: var PIndex = RCache.Marks.Norms.GetPodrIndex(Norm.NormID, T.SPoint.Rows.Get_UnShow <uint>(Protokol[0].SPointID, C.SPoint.Podr)); ATMisc.SetValue(Row, Norm.Station(PIndex).Range, LimitIndex.Index, LimitIndex.Style); break; case data.NType.Volume: var VIndex = RCache.Marks.Norms.GetVolumeIndex(Norm.NormID, T.SPoint.Rows.Get_UnShow <uint>(Protokol[0].SPointID, C.SPoint.Object, C.Object.OLocationFrom)); ATMisc.SetValue(Row, Norm.Volume(VIndex).Range, LimitIndex.Index, LimitIndex.Style); break; } ATMisc.SetValue(Row, Protokol.GetMarkAmount(i), ResultIndex.Index, ResultIndex.Style); } else { if (Protokol.IsSpetialOut(i)) { ATMisc.SetValue(Row, Protokol.GetSpetialOut(i), ResultIndex.Index, ResultIndex.Style); } else { ATMisc.SetValue(Row, Protokol.GetMarkAmount(i), ResultIndex.Index, ResultIndex.Style); } } ATMisc.SetValue(Row, Protokol.GetMethod(i), OMethodIndex.Index, OMethodIndex.Style); ATMisc.SetValue(Row, Protokol.GetMarkName(i), OMarkNameIndex.Index, OMarkNameIndex.Style); ATMisc.SetValue(Row, Protokol.GetMarkEdType(i), OEdTypeIndex.Index, OEdTypeIndex.Style); //Вывожу концентрацию как есть } for (int i = 0; i < WorkBook.NumberOfSheets; i++) { if (WorkBook.GetSheetAt(i).SheetName.ToLower() != "заголовок" && WorkBook.GetSheetAt(i).SheetName.ToLower() != "концентрации") { WorkBook.RemoveSheetAt(i); i--; } } string PeopleNames; { var Ppls = new List <uint>(); for (int i = 0; i < Protokol.SampleCount; i++) { for (int j = 0; j < Ppls.Count; j++) { if (Ppls[j] == Protokol[i].PeopleID) { goto Finded; } } Ppls.Add(Protokol[i].PeopleID); Finded :; } PeopleNames = Misc.GetShortFIO(Ppls[0]); for (int i = 1; i < Ppls.Count; i++) { PeopleNames += ", " + Misc.GetShortFIO(Ppls[i]); } } DateTime DT; { int Year, Month; ATMisc.GetYearMonthFromYM(Protokol.YM, out Year, out Month); DT = new DateTime(Year, Month, Protokol.Day); } var ProtokolNum = ProtokolNumber(Protokol); GetProtokolsExchanges(TitleSheet , DT.Year , ProtokolNum , Objects , Objects , ProbeType , Location , Protokol.DateOstr , Protokol.DateP , Protokol.StrTime , PeopleNames , Cause , Probes , DT.Day.ToString() , ATMisc.GetMonthName2(DT.Month) , DT.Month.ToString() , RCache.PSG.GetMethodName(Protokol.PodrID) , T.PaPoS.Rows.Get <string>(Protokol.PaPoSID, C.PaPoS.Name) , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.FllName) , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.Contact) , Protokol.Act).Exchange(0, 25, 0, 25); { var Exchanges = new CellExchange_Class(TitleSheet); Exchanges.ClearExchanges(); Exchanges.AddColumn("{имя свойства}"); Exchanges.AddColumn("{ед. свойства}"); Exchanges.AddColumn("{значение свойства}"); } { var Exchanges = new CellExchange_Class(ByPodrSheet); Exchanges.AddExchange("{должность ответственного}", T.People.Rows.Get <string>(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Protokol[0].PodrID, C.Podr.PSG)), C.People.Prfssn, C.Prfssn.Name), 5); Exchanges.AddExchange("{ФИО ответственного}", Misc.GetShortFIO(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Protokol[0].PodrID, C.Podr.PSG))), 5); Exchanges.AddExchange("{Номер протокола}", ProtokolNum, 5); Exchanges.AddExchange("{Дата}", DT.ToShortDateString(), 5); SetResp(Exchanges, Protokol.PodrID, data.TResp.LaboratoryProtokol); } return(SaveExcel(WorkBook, NewFileName, Open)); } else { if (Open) { System.Diagnostics.Process.Start(NewFileName); } return(true); } }