分享

dbgrideh通用打印

 独孤求财 2012-03-21

dbgrideh通用打印

时间:2011-5-24来源:yang 作者: peng点击: 59次

procedure TForm1.Button3Click(Sender: TObject);
var
   ExcelApplication1:TExcelApplication;
   ExcelWorksheet1:TExcelWorksheet;
   ExcelWorkbook1:TExcelWorkbook;
   i,j:integer;
 begin
   try
    ExcelApplication1:=TExcelApplication.Create(Application);
    ExcelWorksheet1:=TExcelWorksheet.Create(Application);  
    ExcelWorkbook1:=TExcelWorkbook.Create(Application);
    ExcelApplication1.Connect;
    ExcelApplication1.Visible[0]:=True;
   except
    Application.Messagebox(‘Excel没有安装!‘,‘Hello‘,MB_ICONERROR+mb_Ok);
    Abort;
   end;
   try
    ExcelApplication1.Workbooks.Add(EmptyParam,0);
    ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
    ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1]as _worksheet);
    DBGridEh1.DataSource.DataSet.First;
    for j:=0 to DBGridEh1.DataSource.DataSet.Fields.Count-2 do
     begin
      ExcelWorksheet1.Cells.item[3,j+1]:=DBGridEh1.Columns[j].Title.Caption;//导出DBGridEh1中显示的字段标题
      //ExcelWorksheet1.Cells.item[3,j+1]:=DBGridEh1.DataSource.DataSet.Fields[j].DisplayLabel;//导出数据库中字段名
      ExcelWorksheet1.Cells.item[3,j+1].font.size:=‘10‘;
     end;
       for i:=4 to DBGridEh1.DataSource.DataSet.RecordCount + 3 do  //从excel的第4行到最后
        begin
         for j:= 1 to DBGridEh1.DataSource.DataSet.Fields.Count - 1 do  //从DBGridEh1的第1列到最后
          begin
           //ExcelWorksheet1.Cells.item[i,j+1]:=DBGridEh1.DataSource.DataSet.Fields[j].Asstring;
           //ExcelWorksheet1.Cells.item[i,j+1].font.size:=‘10‘;
****************************************
           ExcelWorksheet1.Range[ExcelWorksheet1.Cells.item[1,2], ExcelWorksheet1.Cells.item[i,2]].NumberFormatLocal:=‘@‘;//第二列设为文本格式
****************************************
           ExcelWorksheet1.Cells.item[i,j]:=DBGridEh1.DataSource.DataSet.Fields[j].Asstring;
           ExcelWorksheet1.Cells.item[i,j].font.size:=‘10‘;
          end;  
          DBGridEh1.DataSource.DataSet.Next;
         end;
          ExcelWorksheet1.Columns.AutoFit;  
          ExcelWorksheet1.Cells.item[1,2]:=‘预测表‘+Formatdatetime(‘YYYYmmdd‘,Now);//DBGridEh1.Columns[0].FieldName; //在excel中第一行显示标题    
          ExcelWorksheet1.Cells.Item[1,2].font.size:=‘14‘;
    finally
    ExcelWorkSheet1.Disconnect;
    ExcelWorkBook1.Disconnect;
    ExcelApplication1.Disconnect;
  end;
end;
*******************************************************************
dbgrideh通用打印

unit uPrint;

interface

uses
  DBGridEh,PrnDbgeh,SysUtils,Graphics,Forms,Printers,windows;

procedure Prnt(AGrid:TDBGridEh;AOwner:Tform;APageHeader:string=‘‘;
  ALineType:TPageColontitleLineType=pcltnon);

implementation

//==============================================================================
// linetype取值{pcltDoubleLine;pcltsingleline;pcltnon}
// AOwner:TForm TPrintDBGridEh.Create(AOwner); 负责TPrintDBGridEh类对象FREE
// TPrinterOrientation = (poPortrait, poLandscape); 纸张竖、横
//==============================================================================

procedure Prnt(AGrid:TDBGridEh;AOwner:TForm;APageHeader:string=‘‘;
  ALineType:TPageColontitleLineType=pcltnon);
var
  prn:TPrintDBGridEh;
begin
  if AGrid.DataSource.DataSet.IsEmpty then exit;
  prn:=TPrintDBGridEh.Create(AOwner);
  with prn.PageHeader do
  begin
    Font.Name:=‘宋体‘;
    Font.Size:=12;
    Font.Style:=[fsbold];
    LineType:=ALineType;
    CenterText.Text:=APageHeader;
  end;
  prn.DBGridEh:=AGrid;
  prn.Preview;
end;

end.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多