• 主页
  • 招聘
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API

如何從Execl文檔中將數據導入到數據庫中

Ivanwxr 2003-04-11 12:39:55
我現在的情況是這樣的﹕
我要從客戶給的Excel文檔中取有用的數據導入數據庫中﹐如下面是一個Execl文檔的格式
AccountTao(表名)
YearMonth Year Month MaxDay(各個欄位名)
2002年07月 2002 07 31
2002年08月 2002 08 31
2001年01月 2001 01 31
2002年09月 2002 09 30
2002年10月 2002 10 31
2002年11月 2002 11 30
2002年12月 2002 12 31
2003年01月 2003 01 31
2003年02月 2003 02 28
2003年03月 2003 03 31
2002年03月 2002 03 31
2003年04月 2003 04 30
我可能只要取Execl文檔中取某一字段或某几個字段
比如﹕我要取上面Execl中的YearMonth﹑MaxDay兩個字段﹐要怎樣來寫程序呢﹖
各位能否給我寫個函數出來﹐謝謝﹗
...全文
111 点赞 收藏 11
写回复
11 条回复
qiujsh 2003年04月12日
用ADOCONNECTION连接EXCEL文件,可以跟操作数据库一样操作
回复 点赞
Ivanwxr 2003年04月12日
To qiujsh(qiujsh)
能否說清楚點呢﹖或者給一個例子﹐謝謝﹗
回复 点赞
Ivanwxr 2003年04月12日
各位高手幫幫呀
回复 点赞
zxydelphi 2003年04月12日
up
回复 点赞
Ivanwxr 2003年04月11日
To wyj1974(迷茫的帅哥)
你的意思是把Excel當一個Table來處理嗎﹖但是在Excel中我有和字段是不需要的﹐那要怎樣來處理呢﹖
回复 点赞
wyj1974 2003年04月11日
报Excel当作数据库一样处理就可实现你的功能
回复 点赞
Ivanwxr 2003年04月11日
怎么呢﹐沒有那位想幫嗎﹖﹕)
回复 点赞
Ivanwxr 2003年04月11日
不好意思﹐還是有點問題﹐下面是我的程序
Procedure TForm1.ExcelToDatabase(Qy:Tdataset);
var
ExcelApp,MyWorkBook :OLEVariant;
Open :TOpenDialog;
i,row : integer;
begin
Open:= TOpenDialog.Create(application);
if Open.Execute then
begin
Try
ExcelApp:=CreateOleObject('Excel.Application');
MyWorkBook:=CreateOleObject('Excel.Sheet');
Except
application.Messagebox('無法打開Xls文件﹐請確定已經安裝了EXCEL.','',mb_OK+mb_IconStop);
Exit;
end;
Try
MyworkBook:= ExcelApp.workBooks.Open(Open.FileName);
//打開文件后﹐對文件進行操作
Row := 1;
if ExcelApp.Range['a'+inttostr(row),'a'+inttostr(row)].Value='' then
begin
application.Messagebox('Excel文件中沒有數據或格式和樣版不一樣!.','',mb_OK+mb_IconStop);
Exit;
end;
Row :=2;
if qy.active = False then Qy.open;
//*************************************************************
在下面這句﹐當Excel文檔到結尾時﹐既當MyWorkBook.WorkSheets[1].Cells[Row,Row].Value為空時會出現一個錯誤。
錯誤信息是﹕
Project project1.exe raised exception class.EvariantError with message'Invalid Variant type conversion'process stopped,Use step or Run to continue.
//*********************************************************************
while MyWorkBook.WorkSheets[1].Cells[Row,Row].Value<>'' do
begin
for i:=0 to Qy.Fields.Count-1 do
begin
qy.Fields[i].Value:=MyWorkBook.WorkSheets[1].Cells[Row,i].Value;
end;
Inc(Row);
end;

finally
ExcelApp.WorkBooks.close;
ExcelApp.Quit;
ExcelApp:=Unassigned;
end; //try..finally
end;
end;

請各位大俠幫幫忙﹐看能不能幫我解決﹐好急的。先謝了﹗
回复 点赞
ayukowa 2003年04月11日
搂住如何解决的,可不可以说出来?
我也遇到类似的问题啊1
回复 点赞
Ivanwxr 2003年04月11日
To Wally_wu(韦利)
不是你想象的那樣的﹐如果能用SQl Server來Import我為什么還要寫程序呢﹖


我現在自已解決了這個問題﹐我要結貼了。
回复 点赞
Wally_wu 2003年04月11日
如果是SQL Server, 可以使用TDS工具,也就是Import and Export Data
回复 点赞
发动态
发帖子
Delphi
创建于2007-08-02

1471

社区成员

26.2w+

社区内容

Delphi 开发及应用
社区公告
暂无公告