コード例 #1
0
        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");
        }
コード例 #2
0
        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");
        }