| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 663 人关注过本帖
标题:[求助]从Excel写数据到Access库 ,能运行,不过有点小问题
只看楼主 加入收藏
emoboy
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-6-25
收藏
 问题点数:0 回复次数:2 
[求助]从Excel写数据到Access库 ,能运行,不过有点小问题

uses comobj,excel97,excel2000;

//从Excel写数据到Access库
prodedure ExcelToMdb(EXLfile:string;);
var
sheet,XLApp,workbook : variant;
iRow,MaxRow:integer;
begin
screen.Cursor:=crHourGlass;
try
//创建对象
XLApp:=createOleObject('Excel.Application');
XLApp.displayAlerts:=false;
XLApp.ScreenUpdating:=false;
XLApp.WorkBooks.Add(EXLfile);
workbook := XLApp.workbooks[1];
sheet:=workbook.worksheets[1];
//sheet:=XLApp.WorkBooks[1].worksheets[1];


//取得最大行数 maxRow
XLApp.ActiveCell.SpecialCells(xlLastCell).Select;
maxRow:=XLApp.ActiveCell.Row; //最大行数

//写数据到Access库
ADOTable1.open;
for iRow:=2 to MaxRow do
begin
ADOTable1.Append ;
ADOTable1.fieldByName('ID').asInteger:=

strToInt(sheet.cells[iRow,1]);
ADOTable1.fieldByName('code').asString:=sheet.cells[iRow,2]; //编码
ADOTable1.fieldByName('name').asString:=sheet.cells[iRow,3]; //名称
ADOTable1.post;
end;

finally
if not VarIsEmpty(XLApp) then begin //释放对象
XLApp.displayAlerts:=false;
XLApp.ScreenUpdating:=true;
XLApp.quit;
end;
screen.Cursor:=crDefault;
end;
end;

//=================== 其他一些属性方法 ===============//

curRow:=XLApp.ActiveCell.Row; //当前行数
XLApp.displayAlerts:=false; //运行宏时是否显示警告和消息
XLApp.ScreenUpdating:=false; //屏幕更新功能,提高速度;
//结束运行后,ScreenUpdating 设回到 True

XLApp.run('macroName',params...)//运行宏

workbook.save ;
workBook.SaveAs(AFileName,xlNormal,'','',False,False);
//=====================================


上面这段程序,EXLfile可以用opendialog控件来打开个excel文件,把opendialgo1.filename赋给EXLfile。该段程序
要求access数据库中不设关键字段,如果要设则需要稍微做点改动。程序的问题是最后1段“释放对象”,程序运行后,只要导入access成功,桌面的excel就不能正常运行,据我判断,并没成功释放对象,而在关闭程序后,excel还在调用中,小弟不才,不知道最后一段该如何改进,请大虾们指点指点。

搜索更多相关主题的帖子: Excel Access 数据 运行 
2006-06-26 00:09
emoboy
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-6-25
收藏
得分:0 

已解决

2006-06-26 19:30
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
收藏
得分:0 
你的对象只是在异常时候被释放,所以也要在程序运行完毕时候释放。

我以前用的是ole对象实现插入SQL Server的。没有用这三个控件。哈哈

大家都是朋友,有空就来坐坐!
2006-06-28 11:44
快速回复:[求助]从Excel写数据到Access库 ,能运行,不过有点小问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.088003 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved