FastReport.NET控件篇之表格控件

342 阅读1分钟

使用场景

表格控件在实际使用中,用的并不多。因为他需要使用代码来驱动打印,没有使用数据区使用文本框绑定来的便捷。但是表格控件在一些场景下,使用起来确非常有效,譬如使用打印模板进行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控件一般放在标题区,如果放置在数据区,确保数据区未选择数据源。如果选择了数据,表格会被打印数据行数次。