private static void ProcessRunningTotalFieldDefinition(RunningTotalFieldDefinition rtfd, XmlWriter xmlw) { xmlw.WriteStartElement("RunningTotalFieldDefinition"); xmlw.WriteAttributeString("EvaluationCondition", ProcessCondition(rtfd.EvaluationCondition)); xmlw.WriteAttributeString("EvaluationConditionType", rtfd.EvaluationConditionType.ToStringSafe()); xmlw.WriteAttributeString("IsPercentageSummary", rtfd.IsPercentageSummary.ToStringSafe()); xmlw.WriteAttributeString("FormulaName", rtfd.FormulaName); xmlw.WriteAttributeString("Kind", rtfd.Kind.ToStringSafe()); xmlw.WriteAttributeString("Name", rtfd.Name); xmlw.WriteAttributeString("NumberOfBytes", rtfd.NumberOfBytes.ToStringSafe()); xmlw.WriteAttributeString("Operation", rtfd.Operation.ToStringSafe()); xmlw.WriteAttributeString("OperationParameter", rtfd.OperationParameter.ToStringSafe()); xmlw.WriteAttributeString("ResetCondition", ProcessCondition(rtfd.ResetCondition)); xmlw.WriteAttributeString("ResetConditionType", rtfd.ResetConditionType.ToStringSafe()); xmlw.WriteAttributeString("SummarizedField", rtfd.SummarizedField.FormulaName); xmlw.WriteAttributeString("UseCount", rtfd.UseCount.ToStringSafe()); xmlw.WriteAttributeString("ValueType", rtfd.ValueType.ToStringSafe()); if (rtfd.Group != null) { xmlw.WriteAttributeString("Group", rtfd.Group.ConditionField.FormulaName); } if (rtfd.SecondarySummarizedField != null) { xmlw.WriteAttributeString("SecondarySummarizedField", rtfd.SecondarySummarizedField.FormulaName); } xmlw.WriteEndElement(); }
static void Main(string[] args) { if (args.Count() >= 1 && args[0] == "-s") { Simplified = true; args = args.Skip(1).ToArray(); } if (args.Count() < 1 || args[0] == "-h") { Console.WriteLine("CrystalReportReaderFramework [-s] report_file_name.rpt"); Console.WriteLine(""); Console.WriteLine(" -s : Simplify output by removing numbers from sections and text fields and by removing location information."); Console.WriteLine(" Simplified output makes it easier to compare reports where layout is not important."); Console.WriteLine(""); return; } string fileName = args[0]; ReportDocument reportDocument = new ReportDocument(); reportDocument.Load(fileName); Database db = reportDocument.Database; foreach (var t in db.Tables) { Table tbl = t as Table; string prefix = "Database:Table:Name:" + tbl.Name + ":"; Console.WriteLine(prefix); Console.WriteLine(prefix + "Location:" + tbl.Location); foreach (var f in tbl.Fields) { FieldDefinition fd = f as FieldDefinition; string fieldPrefix = prefix + "Field:Name:" + fd.Name + ":"; Console.WriteLine(fieldPrefix); Console.WriteLine(fieldPrefix + "Kind:" + fd.Kind); Console.WriteLine(fieldPrefix + "ValueType:" + fd.ValueType); } } foreach (var l in db.Links) { TableLink lnk = l as TableLink; string linkPRefix = "Database:TableLink:SourceTable:" + lnk.SourceTable.Name + ":DestinationTable:" + lnk.DestinationTable.Name + ":"; Console.WriteLine(linkPRefix); Console.WriteLine(linkPRefix + "JoinType:" + lnk.JoinType); for (int i = 0; i < lnk.SourceFields.Count; i++) { DatabaseFieldDefinition sfd = lnk.SourceFields[i] as DatabaseFieldDefinition; DatabaseFieldDefinition dfd = lnk.DestinationFields[i] as DatabaseFieldDefinition; Console.WriteLine(linkPRefix + "SourceField:Name:" + sfd.Name + ":DestinationField:Name:" + dfd.Name); } } var ffs = reportDocument.DataDefinition.FormulaFields; foreach (var ff in ffs) { FormulaFieldDefinition ffd = ff as FormulaFieldDefinition; Console.WriteLine("Formula:FormulaName:" + ffd.FormulaName + ":"); if (ffd.Text != null) { Console.WriteLine("Formula:FormulaName:" + ffd.FormulaName + ":Text:'" + MakeSingleLine(ffd.Text)); } } var rtfs = reportDocument.DataDefinition.RunningTotalFields; foreach (var rtf in rtfs) { RunningTotalFieldDefinition rtfd = rtf as RunningTotalFieldDefinition; Group rc = rtfd.ResetCondition as Group; string prefix = "RunningTotal:FormulaName:" + rtfd.FormulaName + ":"; Console.WriteLine(prefix + "Operation:" + rtfd.Operation); Console.WriteLine(prefix + "SummarizedField:" + rtfd.SummarizedField.Name + "," + rtfd.SummarizedField.FormulaName); Console.WriteLine(prefix + "EvaluationCondition:" + rtfd.EvaluationCondition); Console.WriteLine(prefix + "ResetCondition:" + rc.ConditionField.FormulaName); } var groups = reportDocument.DataDefinition.Groups; foreach (var gp in groups) { Group gpd = gp as Group; string prefix = "Group:GroupName:" + RemoveNumbersIfSimplified(gpd.ConditionField.FormulaName) + ":"; Console.WriteLine(prefix); Console.WriteLine(prefix + "GroupOptions.Condition:" + gpd.GroupOptions.Condition); } var parameterFields = reportDocument.DataDefinition.ParameterFields; foreach (var pf in parameterFields) { ParameterFieldDefinition pfd = pf as ParameterFieldDefinition; var x = "ParameterFields:FormulaName:" + pfd.FormulaName + ":" + "ParameterFieldName:" + pfd.ParameterFieldName; Console.WriteLine(x); } var sections = reportDocument.ReportDefinition.Sections; foreach (var section in sections) { Section sd = section as Section; string prefix = "Section:Name:" + RemoveNumbersIfSimplified(sd.Name) + ":"; Console.WriteLine(prefix); Console.WriteLine(prefix + "Kind:" + sd.Kind); Console.WriteLine(prefix + "EnableKeepTogether:" + sd.SectionFormat.EnableKeepTogether); Console.WriteLine(prefix + "EnableSuppress:" + sd.SectionFormat.EnableSuppress); if (!Simplified) { Console.WriteLine(prefix + "Height:" + sd.Height); Console.WriteLine(prefix + "Height:" + sd.Height); } AddReportObjects(prefix, sd.ReportObjects); } // Console.WriteLine(reportDocument); //Console.ReadLine(); }