导出并合并相邻单元格

来源:互联网 发布:位图变为矢量图软件 编辑:程序博客网 时间:2024/05/20 00:51

unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleServer,
  DB, ADODB, Grids, DBGrids, StdCtrls, ExcelXP;
type
  TForm1 = class(TForm)
    Button1: TButton;
    qry1: TADOQuery;
    ds1: TDataSource;
    DBGrid1: TDBGrid;
    con1: TADOConnection;
    ExcelApplication1: TExcelApplication;
    ExcelWorkbook1: TExcelWorkbook;
    ExcelWorksheet1: TExcelWorksheet;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var
i,row,column:Integer;//Êý¾ÝÐÐÁбäÁ¿
query:TDataSet;
Range:Variant;
s1,s2:string;
begin
  //Á¬½Óµç×Ó±í¸ñ
 try
   ExcelApplication1.Connect;
 except
   MessageDlg('ÊÇ·ñÕýÈ·°²×°ÁËEXCEL£¿',mterror,[mbOK],0);
   Abort;
 end;

 ExcelApplication1.Visible[0]:=True;
begin
  self.ExcelApplication1.DisplayAlerts[1]:=False;//ÆÁ±ÎÌáʾÐÅÏ¢
ExcelApplication1.Workbooks.Add(EmptyParam, 0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
//ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
 Excelworksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
 //ÉèÖÃÊý¾ÝµÚÒ»ÐбíÍ·
 for i:=1 to DBGrid1.FieldCount   do
 begin
   ExcelWorksheet1.Cells.Item[1,i]:=DBGrid1.Fields[i-1].FieldName;
 end;
 //µ¼³öÊý¾Ý
 query:=DBGrid1.DataSource.DataSet;
 row:=2;//´ÓµÚ¶þÐпªÊ¼£»
 with query do
 begin
   First;
   while not Eof do
   begin
     column:=1;
     for i:=1 to FieldCount do
     begin
       ExcelWorksheet1.Cells.Item[row,column]:=Fields[i-1].Value;
       column:=column+1;
     end;
     Next;
     row:=row+1;
   end;
  end;
 // ExcelApplication1.Disconnect;

for i:=2 to row do
  begin
    if i=row then
      Exit;
    //ÕâÀï¸Ä³ÉÕâÑù
    s1:=self.ExcelWorksheet1.Cells.Item[i,2];
    s2:=self.ExcelWorksheet1.Cells.Item[i+1,2];
    if s1=s2 then
      Self.ExcelWorksheet1.Range['B'+inttostr(i),'B'+inttostr(i+1)].MergeCells:=True;
  end;

 ExcelApplication1.Disconnect;  //¶Ï¿ªÁ¬½Ó
end;
 end;
end.

原创粉丝点击