我能自己动态创建什么数据容器,而且可以设置为datagrid的数据源,然后打印报表
我可以将我数组中数据写到该容器中

解决方案 »

  1.   

    内存数据源.ExpressQuantumGrid 5 Suite控件组中事有.另外,也可以直接用stringgrid这类控件,就无须数据源了
      

  2.   

    用listview吧,应该可以控制行列的,打印就先把listview的内容导出到excel,然后再打印,导出到excel很简单,明天给你代码。
      

  3.   

    用listview吧,用查询把数据导入listview,界面美观,至于打印问题,如下:
    uses  ComObj
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    var
      myexcel:variant;
      workbook:olevariant;
      worksheet:olevariant;
      k:integer;
    begin
        try   myexcel:=createoleobject('excel.application');
       myexcel.application.workbooks.add;
       myexcel.caption:='将数据导入到EXCEL表中';
       myexcel.application.visible:=true;
       workbook:=myexcel.application.workbooks[1];
       worksheet:=workbook.worksheets.item[1];
       except
        showmessage('EXCEL不存在!');
       end;
       worksheet.cells[1,1]:='文件简称';
       worksheet.cells[1,2]:='字号';
       worksheet.cells[1,3]:='份数';
       worksheet.cells[1,4]:='文件分类';
       worksheet.cells[1,5]:='收到日期';
       worksheet.cells[1,6]:='发文单位';
       worksheet.cells[1,7]:='备注';
       worksheet.cells[1,8]:='编号';
      for k:=0 to listview1.items.count-1 do
        begin
          worksheet.cells[k+2,1]:=Listview1.items[k].caption;//把第一列的数据放入Excel的第一列
      //其他列的同理
          worksheet.cells[k+2,2]:=Listview1.items[k].SubItems[0];
          worksheet.cells[k+2,3]:=Listview1.items[k].SubItems[1];
          worksheet.cells[k+2,4]:=Listview1.items[k].SubItems[2];
          worksheet.cells[k+2,5]:=Listview1.items[k].SubItems[3];
          worksheet.cells[k+2,6]:=Listview1.items[k].SubItems[4];
          worksheet.cells[k+2,7]:=Listview1.items[k].SubItems[5];
          worksheet.cells[k+2,8]:=Listview1.items[k].SubItems[6];
       end;
    end;
      

  4.   

    把数据写入临时表再用ado查询连接dbgrid这样也可以导出到excel也可以直接做报表