dev express grid + devexpress printsystem www.51delphi.com
你建立窗体(FrmPrint),上面放了checkboxlist控件,里面把dbgrid的columns列倒进入,然后对选择的项目进行打印到Excel中去,我下面有这个函数 function Dbgridtoexcel(ADbgrid: TDbgrid;Allcolumns,Printcolumns: TStringlist): boolean; var excelobj, excel, workbook, sheet: olevariant; i, j, row, col: integer; begin result := false; try excelobj := createoleobject('excel.sheet'); excel := excelobj.application; excel.visible := true; workbook := excel.workbooks.add; sheet := workbook.sheets[1]; except messagebox(getactivewindow, '无法调用mircorsoft excel! ' + chr(13) + chr(10) + '请检查是否安装了mircorsoft excel。', '提示', mb_ok + mb_iconinformation); exit; end; sheet.activate; // 列标题 row := 1; col := 1; ADbgrid.DataSource.DataSet.First; for i := 0 to Allcolumns.Count- 1 do begin if printcolumns.Strings[i] = '1' then begin sheet.cells(row, col) := Allcolumns.Strings[i]; inc(col); end end; // 表内容 for i := 0 to ADbgrid.DataSource.DataSet.RecordCount - 1 do begin row := row + 1; col := 1; for j := 0 to Allcolumns.Count - 1 do begin if printcolumns.Strings[j] = '1' then begin sheet.cells(row, col) :=ADbgrid.Fields[j].AsString; inc(col); end; end; ADbgrid.DataSource.DataSet.Next; end; result := true; end; Allcolumns是dbgrid的column列,printcolumns是你在FrmPrint中的checkboxlist选择的值列
www.51delphi.com
function Dbgridtoexcel(ADbgrid: TDbgrid;Allcolumns,Printcolumns: TStringlist): boolean;
var
excelobj, excel, workbook, sheet: olevariant;
i, j, row, col: integer;
begin
result := false;
try
excelobj := createoleobject('excel.sheet');
excel := excelobj.application;
excel.visible := true;
workbook := excel.workbooks.add;
sheet := workbook.sheets[1];
except
messagebox(getactivewindow, '无法调用mircorsoft excel! ' + chr(13) + chr(10) +
'请检查是否安装了mircorsoft excel。', '提示', mb_ok + mb_iconinformation);
exit;
end;
sheet.activate;
// 列标题
row := 1;
col := 1;
ADbgrid.DataSource.DataSet.First;
for i := 0 to Allcolumns.Count- 1 do
begin
if printcolumns.Strings[i] = '1' then
begin
sheet.cells(row, col) := Allcolumns.Strings[i];
inc(col);
end
end;
// 表内容
for i := 0 to ADbgrid.DataSource.DataSet.RecordCount - 1 do
begin
row := row + 1;
col := 1;
for j := 0 to Allcolumns.Count - 1 do
begin
if printcolumns.Strings[j] = '1' then
begin
sheet.cells(row, col) :=ADbgrid.Fields[j].AsString;
inc(col);
end;
end;
ADbgrid.DataSource.DataSet.Next;
end;
result := true;
end;
Allcolumns是dbgrid的column列,printcolumns是你在FrmPrint中的checkboxlist选择的值列