Synthèse
The ReportSection object references a report section in a report. It provides access to common properties such as a definition query and a method to set the reference data source.
Discussion
An ArcGIS Pro report can contain multiple report sections. Report sections are accessed using the listSections method on the Report object. This returns a Python list of ReportSection and ReportLayoutSection objects. Each report section can be referenced by a unique name and has a REPORT_SECTION type.
A ReportSection has a data source that can be identified using the referenceDataSource property. To change the data source, use the setReferenceDataSource method. This method maps the fields from the new data source to the fields of the report that were defined by the original data source. The field names, not the field aliases, must be an exact, case-sensitive match.
Related reports within report sections also have a source. To change the source, use the setRelatedReportSource method. Like changing the main data source, fields are mapped to the report defined by the original source.
To filter the records exported to PDF, modify the report section's definitionQuery property. To exclude a report section from the exported PDF, set the visible property to false.
Propriétés
Propriété | Explication | Type de données |
definitionQuery (Lecture et écriture) | The definition query of the first ReportSection. Use this to filter the records exported to PDF. | String |
metadata (Lecture et écriture) | Get or set the report's Metadata class information. Note that setting metadata is dependent on the isReadOnly property value. | Metadata |
name (Lecture et écriture) | The report's name. It is important that all reports in a project have a unique name so they can be easily referenced by name. | String |
referenceDataSource (Lecture seule) | The reference data source connection information of the first ReportSection. | Dictionary |
Vue d’ensemble des méthodes
Méthode | Explication |
setReferenceDataSource (data_source) | Sets a report section's reference data source. |
setRelatedReportSource (related_report_data_source, related_report_section_name, relate_or_relationship_class_name) | Sets a related report's data source. |
Méthodes
setReferenceDataSource (data_source)
setRelatedReportSource (related_report_data_source, related_report_section_name, relate_or_relationship_class_name)
Paramètre | Explication | Type de données |
related_report_data_source | The data source for the new related report. This parameter can be a Layer object, a Table object, or a string that represents the path to an external data source. (La valeur par défaut est None) | Object |
related_report_section_name | The name of the related report. (La valeur par défaut est None) | String |
relate_or_relationship_class_name | The name of the new relate or relationship class. (La valeur par défaut est None) | String |
The setRelatedReportSource method sets the data source that the related report references using a Layer object, a Table object, or a string that represents the path to an external data source, the related report name, and the new relate or relationship class name.
The following script sets a new related report source using an in-map relate:
aprx = arcpy.mp.ArcGISProject('current')
report = aprx.listReports("States Report with Relate")[0]
reportSection = report.listSections()[0]
map = aprx.listMaps("States with Capitals")[0]
newRelatedLayer = map.listLayers("Capitals")[0]
relatedReportName = "cities: Related Report"
newRelateName = "states_capitals"
reportSection.setRelatedReportSource(newRelatedLayer, relatedReportName, newRelateName)
Exemple de code
The following script accesses all report sections in a report:
aprx = arcpy.mp.ArcGISProject(r"C:\DemoData\NationalParks.aprx")
report = aprx.listReports("National Parks Report")[0]
sections = [s.name for s in report.listSections() if s.type=="REPORT_SECTION"] # Get list of report section names
for s in sections:
print(s)
# National Parks Overview
# Park Highlights
# Annual Review
The following script sets a report section visibility to False:
aprx = arcpy.mp.ArcGISProject(r"C:\DemoData\NationalParks.aprx")
report = aprx.listReports("National Parks Report")[0]
section = report.listSections("National Parks Overview")[0] # Find the report section by name
section.visible = False
The following script sets the reference data source for the second report section in a report to a table in a map:
aprx = arcpy.mp.ArcGISProject(r"C:\DemoData\NationalParks.aprx")
map = aprx.listMaps("National Parks")[0] # Find a map in the project
table = map.listTables()[0] # Find the first table in the map
report = aprx.listReports("National Parks Report")[0]
section = report.listSections()[1] # Find the report section by index
section.setReferenceDataSource(table)
The following script modifies the definition query for the third report section in a report:
aprx = arcpy.mp.ArcGISProject(r"C:\DemoData\NationalParks.aprx")
report = aprx.listReports("National Parks Report")[0]
section = report.listSections("Annual Review")[0] # Find the report section by name
section.definitionQuery = "ParkName = 'Yosemite'"
Vous avez un commentaire à formuler concernant cette rubrique ?