private static void ModifyReportTest() { var rpt = new ReportDocument(); rpt.Load(@"Reports\SimpleReport.rpt"); var section = rpt.ReportDefinition.Sections["DetailSection1"]; section.Height = 3 * 1440; var fieldObjects = rpt.ReportDefinition.ReportObjects.OfType <FieldObject>().ToList(); var number = 0; foreach (FieldObject fieldObject in fieldObjects) { fieldObject.ObjectFormat.HorizontalAlignment = Alignment.LeftAlign; fieldObject.Left = 1 * 1440 + 200; fieldObject.Top = 300 * number; fieldObject.Width = 6 * 1440; if (fieldObject.Name == "Status1") { fieldObject.ObjectFormat.EnableSuppress = true; } number++; } var fieldHeadingObjects = rpt.ReportDefinition.ReportObjects.OfType <FieldHeadingObject>().ToList(); number = 0; foreach (FieldHeadingObject header in fieldHeadingObjects) { header.ObjectFormat.HorizontalAlignment = Alignment.LeftAlign; header.Left = 0; header.Top = 300 * number; header.Width = 1 * 1440; //if (header.Name == "Status1") //{ // fieldObject.ObjectFormat.EnableSuppress = true; //} number++; } var doc = rpt.ReportClientDocument; var sectionStart = doc.ReportDefController.ReportDefinition.DetailArea.Sections[0]; var sectionEnd = doc.ReportDefController.ReportDefinition.DetailArea.Sections[0]; CrystalDecisions.ReportAppServer.ReportDefModel.BoxObject boxObject = new CrystalDecisions.ReportAppServer.ReportDefModel.BoxObject(); boxObject.Left = 10; boxObject.Right = 7 * 1440; boxObject.Top = 1440; boxObject.LineColor = 16; // boxObject.FillColor = 16; boxObject.LineThickness = 15; boxObject.LineStyle = CrystalDecisions.ReportAppServer.ReportDefModel.CrLineStyleEnum.crLineStyleSingle; boxObject.SectionName = sectionStart.Name; boxObject.EndSectionName = sectionEnd.Name; boxObject.EnableExtendToBottomOfSection = true; boxObject.SectionCode = sectionStart.SectionCode; doc.ReportDefController.ReportObjectController.Add(boxObject, sectionStart, 0); var headers = doc.ReportDefController.ReportObjectController.GetReportObjectsByKind(CrystalDecisions.ReportAppServer.ReportDefModel.CrReportObjectKindEnum.crReportObjectKindFieldHeading); foreach (CrystalDecisions.ReportAppServer.ReportDefModel.ISCRReportObject item in headers) { doc.ReportDefController.ReportObjectController.Remove(item); doc.ReportDefController.ReportObjectController.Add(item, sectionStart); } // Utworzenie nowej formuły var formula = new CrystalDecisions.ReportAppServer.DataDefModel.FormulaField(); formula.Text = "if recordnumber mod 2 = 0 then Color(225, 225, 225) else crWhite"; formula.Name = "Color"; formula.Syntax = CrystalDecisions.ReportAppServer.DataDefModel.CrFormulaSyntaxEnum.crFormulaSyntaxCrystal; formula.Type = CrystalDecisions.ReportAppServer.DataDefModel.CrFieldValueTypeEnum.crFieldValueTypeSameAsInputField; // Utworzenie formuły warunkowej var conditionFormula = new CrystalDecisions.ReportAppServer.ReportDefModel.ConditionFormula(); conditionFormula.Text = "if recordnumber mod 2 = 0 then crRed else crWhite"; conditionFormula.Syntax = CrystalDecisions.ReportAppServer.DataDefModel.CrFormulaSyntaxEnum.crFormulaSyntaxCrystal; doc.DataDefController.FormulaFieldController.Add(formula); var myenum = CrystalDecisions.ReportAppServer.ReportDefModel.CrSectionAreaFormatConditionFormulaTypeEnum.crSectionAreaConditionFormulaTypeBackgroundColor; sectionStart.Format.ConditionFormulas[myenum] = conditionFormula; // var formulaTypeBackgroundColor = sectionStart.Format.ConditionFormulas[myenum]; // Utworzenie nowej sekcji CrystalDecisions.ReportAppServer.ReportDefModel.Section newSection = new CrystalDecisions.ReportAppServer.ReportDefModel.Section(); newSection.Kind = CrystalDecisions.ReportAppServer.ReportDefModel.CrAreaSectionKindEnum.crAreaSectionKindDetail; newSection.Name = "Detail2"; newSection.Height = 200; newSection.Width = 11520; var area = doc.ReportDefController.ReportDefinition.DetailArea; doc.ReportDefController.ReportSectionController.Add(newSection, area, -1); rpt.SaveAs(@"Reports\ModifiedReport.rpt"); rpt.ExportToDisk(ExportFormatType.PortableDocFormat, "ModifiedReport.pdf"); rpt.Close(); rpt.Dispose(); System.Diagnostics.Process.Start("ModifiedReport.pdf"); }
private static void TransformReportTest() { var rpt = new ReportDocument(); rpt.Load(@"Reports\SimpleReport.rpt"); var doc = rpt.ReportClientDocument; // var fieldObjects = rpt.ReportDefinition.ReportObjects.OfType<FieldObject>().ToList(); var fields = doc.ReportDefController.ReportObjectController.GetReportObjectsByKind(CrystalDecisions.ReportAppServer.ReportDefModel.CrReportObjectKindEnum.crReportObjectKindField); // var q = doc.ReportDefController.ReportDefinition.DetailArea.Sections.Count; var textObject = new CrystalDecisions.ReportAppServer.ReportDefModel.TextObject(); var sectionStart = doc.ReportDefController.ReportDefinition.DetailArea.Sections[0]; sectionStart.Format.BackgroundColor = 16; var fontColor = new CrystalDecisions.ReportAppServer.ReportDefModel.FontColor(); var font = new CrystalDecisions.ReportAppServer.ReportDefModel.Font(); font.Bold = true; font.Name = "Arial"; fontColor.Font = font; fontColor.Color = 0; var header1 = new CrystalDecisions.ReportAppServer.ReportDefModel.FieldHeadingObject(); header1.FieldObjectName = "headerPole"; header1.FontColor = fontColor; // doc.ReportDefController.ReportObjectController.Add(textObject, sectionStart, -1); foreach (CrystalDecisions.ReportAppServer.ReportDefModel.ISCRReportObject fieldObject in fields) { // Utworzenie nowej sekcji CrystalDecisions.ReportAppServer.ReportDefModel.Section newSection = new CrystalDecisions.ReportAppServer.ReportDefModel.Section(); newSection.Kind = CrystalDecisions.ReportAppServer.ReportDefModel.CrAreaSectionKindEnum.crAreaSectionKindDetail; newSection.Name = "Detail" + fieldObject.Name; newSection.Height = 300; newSection.Width = 11520; // var area = doc.ReportDefController.ReportDefinition.DetailArea; var index = fields.FindIndexOf(fieldObject); if (index % 2 == 0) { newSection.Format.BackgroundColor = 14803425; } doc.ReportDefController.ReportSectionController.Add(newSection, doc.ReportDefController.ReportDefinition.DetailArea, -1); fieldObject.Format.HorizontalAlignment = CrystalDecisions.ReportAppServer.ReportDefModel.CrAlignmentEnum.crAlignmentLeft; fieldObject.Left = 200; fieldObject.Top = 0; fieldObject.Width = 6 * 1440; // Przesuwamy pole doc.ReportDefController.ReportObjectController.Remove(fieldObject); doc.ReportDefController.ReportObjectController.Add(fieldObject, newSection); } // Utworzenie grupy var group = new CrystalDecisions.ReportAppServer.DataDefModel.Group(); var tableIndex = doc.DatabaseController.Database.Tables.FindByAlias("Orzeczenia"); var table = (CrystalDecisions.ReportAppServer.DataDefModel.Table)doc.DatabaseController.Database.Tables[tableIndex]; // Pobranie pola z raportu var field = (CrystalDecisions.ReportAppServer.DataDefModel.Field)table.DataFields.FindField("{Orzeczenia.OsobaId}", CrystalDecisions.ReportAppServer.DataDefModel.CrFieldDisplayNameTypeEnum.crFieldDisplayNameFormula, CrystalDecisions.ReportAppServer.DataDefModel.CeLocale.ceLocaleUserDefault); // Ustawienie pola do grupowania group.ConditionField = field; // Dodanie grupy do raportu doc.DataDefController.GroupController.Add(-1, group); // Dodanie pola z bazy danych var field2 = new CrystalDecisions.ReportAppServer.ReportDefModel.FieldObject(); field2.DataSourceName = "{Orzeczenia.OsobaId}"; field2.FieldValueType = CrystalDecisions.ReportAppServer.DataDefModel.CrFieldValueTypeEnum.crFieldValueTypeInt32sField; field2.Left = 4 * 1440; //1440 twips per inch field2.Width = 3 * 1440; field2.FontColor = new CrystalDecisions.ReportAppServer.ReportDefModel.FontColor(); field2.FontColor.Font.Name = "Arial"; field2.FontColor.Font.Size = 10; field2.Format.HorizontalAlignment = CrystalDecisions.ReportAppServer.ReportDefModel.CrAlignmentEnum.crAlignmentLeft; // var sectionStart = doc.ReportDefController.ReportDefinition.DetailArea.Sections[0]; var groupSection = doc.ReportDefController.ReportDefinition.GroupHeaderArea[0].Sections[0]; //Add the object to the report doc.ReportDefController.ReportObjectController.Add(field2, groupSection, -1); rpt.SaveAs(@"Reports\TransformReport.rpt"); rpt.ExportToDisk(ExportFormatType.PortableDocFormat, "TransformReport.pdf"); rpt.Close(); rpt.Dispose(); System.Diagnostics.Process.Start("TransformReport.pdf"); }