使用场景
表格控件在实际使用中,用的并不多。因为他需要使用代码来驱动打印,没有使用数据区使用文本框绑定来的便捷。但是表格控件在一些场景下,使用起来确非常有效,譬如使用打印模板进行Excel导出时,使用Table模板的导出Excel没有过多的合并单元格的列。
表格控件(Table)常用的模板方式有两种,纵向打印(列表)和横向打印(多列)。
纵向打印(列表方式)
设计的表格包含3行,打印时数据行需要进行循环打印直到数据打印完。
PrintRow指定打印那一行,
PrintColumns,打印这一行的所有列。
注意:可以直接使用Count、Sum、Sum、Max、Min等函数进行数值统计,如Count(Cell7)对Cell7的数值进行统计。
private void Table1_ManualBuild(object sender, EventArgs e)
{
DataSourceBase rowData = Report.GetDataSource("Scores");
rowData.Init();
//打印标题行
Table1.PrintRow(0);
Table1.PrintColumns();
rowData.First();
while(rowData.HasMoreRows)
{
Table1.PrintRow(1);
Table1.PrintColumns();
rowData.Next();
}
Table1.PrintRow(2);
Table1.PrintColumns();
}
预览如下
横向打印(多列方式)
与纵向打印(列表方式)一致,区别在于横向打印时,需要先指定打印的列,然后打印这一列的所有的行。
注意:该方式下。Avg等方法无法直接使用。
private void Table2_ManualBuild(object sender, EventArgs e)
{
DataSourceBase rowData = Report.GetDataSource("Scores");
rowData.Init();
//打印标题列
Table2.PrintColumn(0);
Table2.PrintRows();
rowData.First();
while(rowData.HasMoreRows)
{
Table2.PrintColumn(1);
Table2.PrintRows();
rowData.Next();
}
Table2.PrintColumn(2);
Table2.PrintRows();
}
预览如下:
注意点
Table控件一般放在标题区,如果放置在数据区,确保数据区未选择数据源。如果选择了数据,表格会被打印数据行数次。