The report template drives which data columns are printed; the host only loads data, binds it and opens the report so the selection can be applied.

Bind data and open the report.
var data = new DataSet();
data.ReadXmlSchema("Demo.xsd");
data.ReadXml("Demo.xml");

var report = new StiReport();
report.Load("SelectingColumns.mrt");
report.RegData(data);
report.Design();   // or report.Show();

How it works. Column choice lives in the .mrt, so the same code produces different printed columns without any change to the application.