如何把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;