...
| ||||||
---|---|---|---|---|---|---|
|
...
Basic Setup
In order to import multiple rows of data into a presentation, two conditions must be met:
- The data source must contain multiple rows of data
- The template must be designed to enable PowerPointWriter's automatic repeating behavior
Data Sources
PowerPointTemplate has a single method for binding data to the data markers that are located in the template: PowerPointTemplate.BindData
. Depending on the data source type and the number of rows in the data source, PowerPointWriter will either import a single row of data or import multiple rows by repeating sections of the presentation.
By default, every appearance of a data marker will be populated with the same data. For example, if %%=Header.CompanyLogo(image) appears on multiple slides, each data marker will be populated with the company logo. This behavior can be overwritten using data binding properties.
When importing multiple row of data, the data marker must be placed in a list entry or table row. The list or table will be expanded to contain all of the imported data. If the data source only has 1 row or the maximum number of rows to import has been set to 1, then PowerPointWriter will not repeat any part of the presentation.
Setting up the Template
Repeating in a list or table
If a data marker is in a list entry (i.e. bullet point) or table cell, the list entry/table row will be copied for each row of data imported into the presentation.
| Data Marker | Output |
List Entry |
|
|
Table Row |
|
|
Preventing overflow
By default, PowerPointWriter will continue to repeat until all of the data in the data source has been imported. To prevent lists and tables from spilling over the edge of the slide, set DataBindingProperties.MaxRowsPerSlide. This will break the data import into "batches" of rows. You can then specify how you want each batch to be imported.
To import only 1 batch, you do not need to do anything further to your presentation. To import multiple batches of rows, you need to use one of the two options (or both):
- Continue modifier
- RepeatSlide marker
Continue modifier
The continue modifier tells PowerPointWriter where the next batch of data should go.
RepeatSlide marker
The repeat slide marker, %%RepeatSlide
, goes into the notes section on a slide. After PowerPointWriter is done importing a batch of rows, it will make a copy of the slide
Repeating an entire slide for each row of data
Repeat Slide Behavior
DataBindingProperties
Data binding properties can be used to specify the way data is imported into the presentation.
To set the max number of rows to import onto each slide of the presentation use MaxRowsPerSlide. MaxRowsPerSlide will continue to import more rows of data as long as it can find a data marker with the 'continue' modifier. For more information see Fitting Data on to Multiple Slides
Types of Data Sources
Arrays of objects
Methods:
[PowerPointTemplate.BindData(Object[],String[],String,DataBindingProperties)]
[PowerPointTemplate.BindData(Object[][],String[],String,DataBindingProperties)]
[PowerPointTemplate.BindData(Object
,
,String[],String,DataBindingProperties)]
Arrays don't have built-in means to store column names. The user must specify the column names in a string array that is passed to PowerPointTemplate.BindData
at run time.
PowerPointWriter will import all the rows in a multidimensional array (Object[,]
) or a jagged array using built-in repeating behavior.
...
Two dimensional array:
...
string[][] twodim = {
new string[]{"Watertown", "MA", "02472"},
new string[]{"Washington", "DC", "20036"}
};
string[] names = {"City", "State", "Zip"};
pptt.BindData(twodim,
names,
"TwoDimArray",
pptt.CreateDataBindingProperties());
pptt.Process();
pptt.Save(Page.Response,
"ArrayBinding.pptx",
false);
...
Dim twodim()() As String = New String()() { _
New String(){"Watertown", "MA", "02472"}, _
New String(){"Washington", "DC", "20036"}, _
}
Dim names As String() = {"City", "State", "Zip"}
pptt.BindData(twodim, _
names, _
"TwoDimArray", _
pptt.CreateDataBindingProperties())
pptt.Process()
pptt.Save(Page.Response, _
"ArrayBinding.pptx", _
False)
Data Tables
To bind a DataTable to a template data marker call BindData using the following signature:
Code Block |
---|
BindData(DataTable dt, String dataMarkerName, DataBindingPeoperties dataProps);
|
This signature takes a Datatable, the name of the data marker to which the data source should bind, and a collection Data Binding Properties.
...
//Create a data table
DataTable states = new DataTable();
dt.Columns.Add("State");
dt.Columns.Add("Population");
dt.Rows.Add(new object[] { "Connecticut", "3.6 million residents" });
dt.Rows.Add(new object[] { "Maine", "1.3 million residents" });
dt.Rows.Add(new object[] { "Massachusetts", "6.6 million residents" });
//Create DataBindingProperties
DataBindingProperties dataBindProps = pptt.CreateDataBindingProperties();
//Bind the data
pptt.BindData(states, "State Info", dataBindProps);