Delphi从Excel导入数据
要写一程序从Excel导入数据,从网上查到通用程序的写法,我只做了少量修改。
ExcelProUnit.pas
unit ExcelProUnit;
interface
type
TExcelFunction = procedure(asheet: OleVariant); //声明导入函数
{访问单元格:sheet.cells[row,col]
转为string:vartostr(sheet.cells[row,col])
转为datetime:vartodatetime(sheet.cells[row,col])
}
//afilename为数据源文件名,func为执行导入的函数
procedure RunExcelApplication(afilename: string; func: TExcelFunction);
implementation
uses Controls, Forms, ComObj, windows, sysutils;
procedure RunExcelApplication(afilename: string;
func: TExcelFunction);
var
app: OleVariant;
oldCursor: TCurSor;
begin
oldCursor := Screen.Cursor;
//保存鼠标指针状态
Screen.Cursor := crHourGlass;
try
CoInitializeEx(nil, 0);
app := CreateOleObject('Excel.Application');
try
app.DisplayAlerts := False;
app.WorkBooks.open(afilename);
//打开源文件
app.WorkSheets[1].Activate;
app.visible := False; //隐藏excel窗体
if Assigned(func) then //执行导入函数
func(app.ActiveSheet); //传递sheet给函数进行导入
finally
app.WorkBooks.close;
app.quit; //关闭推出excel
Screen.Cursor := oldCursor;
end;
except on e: Exception do
begin
MessageBox(GetActiveWindow, pchar(e.message), '提示', MB_OK + MB_ICONINFORMATION);
Screen.Cursor := OldCursor;
Exit;
end;
end;
end;
end.
主要考虑的地方是传进去的函数的写法。以下写法没有进行过多的细化主要是完成功能。
ExcelMainUnit.pas
unit excelmainUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses ExcelProUnit;
var
sl: tStrings;
{$R *.dfm}
procedure GetFromExcel(asheet: OleVariant);
var
s, rs: string;
row: integer;
begin
row := 1;
s := trim(vartostr(aSheet.cells[row, 1]));
while s <> '' do
begin
rs := '';
rs := rs + vartostr(aSheet.cells[row, 1]) + ' ';
rs := rs + vartostr(aSheet.cells[row, 2]) + ' ' + vartostr(aSheet.cells[row, 3]);
inc(row);
sl.Add(rs);
s := trim(vartostr(aSheet.cells[row, 1]));
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
sl := TStringList.Create;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RunExcelApplication(ExtractFilePath(application.ExeName) + 'success.xlsx', GetFromExcel);
memo1.Lines.AddStrings(sl);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
RunExcelApplication(ExtractFilePath(application.ExeName) + 'success.xls', GetFromExcel);
memo1.Lines.AddStrings(sl);
end;
end.
其中Excel数据为:
姓名 成绩 备注
Danny 100 完胜
Way 99 差一分完胜
Jay 59 没及格,太难受了
Joan 77 中等
读取数据为:
姓名 成绩 备注
Danny 100 完胜
Way 99 差一分完胜
Jay 59 没及格,太难受了
Joan 77 中等
2011-5-27 23:10 danny
分享到:
相关推荐
一个完整的例子,有源程序和编译好的可执行文件,展示了从EXCEL导入数据到数据库中。可以借鉴学习,适合初学者
delphi EXCEL导入SQL源码
delphi的excel导入sqlserver2000,delphi的excel导入sqlserver2000
Delphi中从Excel导入数据的通用方法Delphi中从Excel导入数据的通用方法
批量从Excel导入数据到Access中,Delphi实现,这是个大家都关注过的问题,报表在Delphi中的应用也相当广泛,有必要掌握,特别是Access与Excel之间的操作,两者都可看作是报表,本程序虽简单,但至少讲出了Excel数据...
Delphi将Excel导入Access(菜鸟版)
delphi 从EXCEL文件导入到SQLSERVER数据表中 源码,非常有价值 源代码程序,可以参考一下,提供给大家学习
delphi Excel 导入的例子 绝对经典. 不需要依赖EXCEL. 不需要安装,只需要引用Sources
delphi做的excel导入access,适合学习,借鉴
delphi实现excel导入数据库到firebird
里面包含了所有源码,经我证实可用,里面包含了使用方法,我也是从网上下来的,发上来与大家共享下,
Delphi Excel数据导入到数据库 需要 uses ComObj; 具体使用方法在文档中有说明
Delphi报表的Excel导入导出操作实例。
在delphi软件中实现将excel数据表导入access
Delphi调用Excel报表进行数据导入导出,Delphi通过调用Excel报表组件,将Delphi自身ListView数据导入到Excel文档中,导入完毕可通过Delphi窗口关闭Excel文档,除此之外,生成打印预览,程序界面如上示。
用Delphi封装的Excel导入导出,原创
通过delphi导入excel数据至sql数据库。为繁体中文系统下所写。
Delphi+将Excel导入Access数据库
不需Excel也可讀寫xls檔的Delphi控件 用来读取Excel,Access的控件 读写任何单元值 数字型、字符型、布尔型以及错误型。但是你了解日期和时间型单元吗?在Excel中没有这样的单元。Excel是和Delphi一样的方式来存储...
delphi实现excel和SQLserver数据的导入导出 可以做参考