如何把DELPHI中的数据集导入到EXCEL中2

花了两个小时做完了DELPHI中的数据集导入到EXCEL中的问题,在使用中要添加OleServer,控件使用DELPHI自带的Severs下的ExcelApplication,ExcelWorkbook,ExcelWorksheet三个控件。其中所有的变量都可以自定义,包括文件路径的保存,文件名字的设置,EXCEL中字体的大小,行宽列高等。在添加数据集的过程中,注意自身的循环和数据的对应关系即可。

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleServer, StdCtrls, ExcelXP;

type
  TForm1 = class(TForm)
    ExcelApplication1: TExcelApplication;
    ExcelWorkbook1: TExcelWorkbook;
    ExcelWorksheet1: TExcelWorksheet;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
  private
  { Private declarations }
   procedure WriteExcel(sName, Title: string);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var sName, Title: string;
begin
   sName:=Edit1.Text;  //保存的EXCEL的文件名
   Title:=Edit2.Text;//保存的文件的标题,在文件打开后的表首
   WriteExcel(sName, Title);//写入EXCEL
end;

procedure TForm1.WriteExcel(sName, Title: string);
var
i, j: integer;
filename: string;
begin
  filename := concat((extractfilepath(application.exename)+'excel\'), sName, '.xls');
  //保存在程序所在文件夹下的一个叫做excel的文件夹下面,可以自行设定

  //初始化
  try
     ExcelApplication1 := TExcelApplication.Create(Application); 
     ExcelWorksheet1 := TExcelWorksheet.Create(Application);
     ExcelWorkbook1 := TExcelWorkbook.Create(Application);
     ExcelApplication1.Connect;

//首先是Excel应用程序实例,然后是ExcelWorkbook1工作溥,再后是ExcelWorksheet1工作表
  except
     Application.Messagebox('Excel 没有安装!', 'Hello', MB_ICONERROR + mb_Ok);
     Abort;
  end;

  ///////////////////////////////////////////////////

   //数据的导出
  ////////////////////////////////////////////

  try
    begin
     ExcelApplication1.Workbooks.Add(EmptyParam, 0);
     ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
     ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
     for i := 2 to 3 do
       begin
        for j := 1 to 5 do
           begin
              ExcelWorksheet1.Cells.item[i, j ] :='1';
           end;
        end;
      ExcelWorksheet1.Columns.AutoFit;
      ExcelWorksheet1.Cells.item[1, j/2] := Title;//标题单元格的内容
      ExcelWorksheet1.Cells.ColumnWidth:='10'; //设置单元格的宽度
      ExcelWorksheet1.Cells.RowHeight:='15'; //设置单元格的高度
      ExcelWorksheet1.Cells.Font.Size:='10'; //设置单元格字体的大小
      ExcelWorksheet1.Cells.Font.Color:=clred;
      ExcelWorksheet1.Cells.Item[1, j/2].font.size :='14';//标题单元格字体的大小
      ExcelWorksheet1.SaveAs(filename);
      Application.Messagebox(pchar('数据成功导出' + filename), 'Hello',mb_Ok);
     end

    //结束释放空间
   finally
     ExcelApplication1.Disconnect; //断开连接
     ExcelApplication1.Quit; //退出EXCEL
     ExcelApplication1.Free;//释放空间
     ExcelWorksheet1.Free; //释放空间
     ExcelWorkbook1.Free; //释放空间
   end;
end;

end.

 

顺便拷一段读写txt文件的程序

Procedure NewTxt(FileName:String);
Var
 F : Textfile;
Begin
  if fileExists(FileName) then DeleteFile(FileName); {看文件是否存在,在就刪除}
 AssignFile(F, FileName); {将文件名与变量 F 关联,FileName一定要有.txt后缀,如果没有,这里要加上}
 ReWrite(F); {创建一个新的文件并命名为 ek.txt}
 Writeln(F, '将您要写入的文本写入到一个 .txt 文件');
 Closefile(F); {关闭文件 F}
End;

Procedure OpenTxt(FileName:String);
Var
 F : Textfile;
Begin
 AssignFile(F,FileName); {将文件名与变量 F 关联}
 Append(F); {以编辑方式打开文件 F }
 Writeln(F, '将您要写入的文本写入到一个 .txt 文件');
 Closefile(F); {关闭文件 F}
End;

Procedure ReadTxt(FileName:String);
Var
 F : Textfile;
 str : String;
Begin
 AssignFile(F, FileName); {将文件名与变量 F 关联}
 Reset(F); {打开并读取文件 F }
 Readln(F, str);
 ShowMessage('文件有:' +str + '行。');
 Closefile(F); {关闭文件 F}
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
 NewTxt;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 OpenTxt;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 ReadTxt;
end; 

posted @ 2012-03-09 15:38  stma  阅读(242)  评论(0)    收藏  举报