怎样把stringgrid控件的数据放到报表里打印?(30分)

  • 主题发起人 主题发起人 archai
  • 开始时间 开始时间
A

archai

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是fastrepot和delphi自带报表控件
 
fastreport我没有实现过,不过quickreport我实现了,看看有什么可以共享的
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1965759
 
FastReprot由子代的例子,打印
StringGrid的,我也有一个例子。
 
to;wangzheking,hug
把你们的例子发一份给我好吗?
archai@163.com
 
fastreport自带的例子就是打印StringGird, 主要就是一个GetValue方法的实现. 我拷贝了一段.
先要设置用户数据集的RangeEnd := reCount;
打印时设置RowDataSet.RangeEndCount := Grid.RowCount - 1;
//打印的行数.

procedure TFormSGVTasksMan.frReport1GetValue(const ParName: String;
var ParValue: Variant);
var
i : integer;
begin
for i := 0 to 10do
//列数,fastreport中memo标号从Cell0到Cell10
if ParName = 'Cell' + intToStr(i) then
begin
try
if (sPrintTypeStr = '自检') or (sPrintTypeStr = '送检') then
begin
if i = 0 then
//打印的记录序号,不是全部打印时,序号不能使用GridVTaskPlan的序号,否则中间会有不连续.
ParValue := intTostr(RowDataSet.RecNo + 1)
else
ParValue := GridVTaskMan.Cells[i, strToInt(sPrintRowNoList[RowDataSet.RecNo])];
end
else
ParValue := GridVTaskMan.Cells[i, RowDataSet.RecNo + 1];
break;
except
ParValue := '';
break;
end;
//ParValue := GridVTaskMan.Cells[i, RowDataSet.RecNo + 1];
//break;
end;

{if ParName = 'Pages' then
begin
ParValue := PagesTitle;
end;
}
if ParName = 'Title' then
begin
ParValue := TableTitle;
end;
if ParName = 'TitleAddin' then
begin
ParValue := TableTitleAddin;
end;
end;
 
procedure DeriveToExcel1(Grid: TStringGrid);
var
ExcelApp, WorkBook: Variant;
Row, Col: Integer;
begin

// 数据发送到 Excel
try
ExcelApp := CreateOleObject('Excel.Application');
WorkBook := CreateOleObject('Excel.Sheet');
except
Application.MessageBox('你的机器里未安装Microsoft Excel. ', '', 32);
Exit;
end;

Application.ProcessMessages;
WorkBook := ExcelApp.WorkBooks.Add;
for Row := 0 to Grid.RowCount - 1do
begin
for Col := 0 to Grid.ColCount - 1do
begin
ExcelApp.Cells(Row+2, Col+1) := Grid.Cells[Col,Row];
end;
end;
ExcelApp.Visible := True;
end;
 
后退
顶部