今天在Delphi中使用ADO连接Excel

转载 2011年11月15日 17:00:41

今天在Delphi中使用ADO连接Excel(以前在一本书看过,复习一下-_-!!),有所收获,不敢独享。第一部分:1. 设置ADOConnection的ConnectionString属性的OLE DB的提供者要选择Microsoft Jet 4.0 OLE DBProvider(这本来是用于连接Access数据库的驱动程序,但也可打开Excel文件),按 "下一步"按钮2. 选择数据库名称。注意:Excel的扩展名是*.xls,而默认文件类型是Microsoft Access 数据库(*.mdb),我们就选择"全部文件(*.*)"吧,接着选择我们要连接的Excel文件咯!!如果在当前路径,就直接填2007.xls。 这时先别慌按 "测试连接"按钮,不然会出现错误对话框的。可以试试看,了解一下 ^_^3. 在"所有"选项卡中找到 "Extended Properties",双击它或者按"编辑值"按钮,设置Extended Properties为"Excel 8.0 "。4. 我们返回"连接"选项卡,按"测试连接"按钮。测试连接成功!!!^_^最后,设置完成后的ConnectionString中的各项参数为:

//--2003及一下版本
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties=Excel 8.0'
//--2007
'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;Extended Properties= Excel 12.0;Persist Security Info=True';

%s表示文件的路径

Persist Security Info=False第二部分:接着就用ADOTable,ADODataSet和ADOQuery连接到刚才的ADOConnection,当然你可以直接设置ADOTable,ADODataSet或ADOQuery的ConnectionString属性。1. ADOTable设置:a. ADOTable的TableName属性值:系统自动生成Excel的Sheet1$,Sheet2$和Sheet3$。直接Active设置成true,系统会报告SQL语句格式错误等信息。b. 找到TableDirect属性,设置为True。因为,访问Excel文件是直接的数据文件访问,不是通过SQL语句来操作游标访问的。接着将Active设置成true。成功了!! ^_^c. 可以不使用TableDirect属性,将TableName属性中的Sheet1$,Sheet2$和Sheet3$分别改成[Sheet1$],[Sheet2$]和[Sheet3$]。对,就是加"[]"就行了。2. ADODataSet设置:a. 只需要将CommandType属性设置为cmdTableDirect,选择工作表,Active设置成true就成功了。b. 也可以将CommandType属性设置为cmdTable,将CommandText属性中改成[Sheet1$],[Sheet2$]和[Sheet3$]。3. ADOQuery设置:SQL属性如下:

 

select * from [sheet1$]总结:复习以前所学的,尝试新的连接方法,有益于加深记忆。我发现工作表名后面都要多加一个$符号,还有就是打开ADOTable,ADODataSet或者ADOQuery以后,它们的CursorType自动变成ctStatic。 


获取Excel版本

{
const
  Wordversion97 = 8; 
  Wordversion2000 = 9; 
  WordversionXP = 10; 
  Wordversion2003 = 11; 
  Wordversion2007 = 12; 
} 

function GetInstalledWordVersion: Integer;
var 
  Excel: OLEVariant;
begin
  try
    Excel:=CreateOLEObject('Excel.Application');
  except
    ShowMessage('Error...');
    Exit;
  end;
  result := Excel.version;
  Excel.Quit;
  Excel := UnAssigned;
end;


在DELPHI中使用ADO直接访问Excel数据文件

在DELPHI中使用ADO直接访问Excel数据文件1.设置ADOConnection的ConnectionString    构造ConnectionString时,OLE DB的提供者要选择Mic...
  • yumenglong
  • yumenglong
  • 2007年04月11日 23:07
  • 3612

Delphi ADO 连接 Excel (附Excel各个版本的版本号)

引用ComObj这个单元 Type Conn: TADOConnection; qry: TADOQuery; var Excel: OLEVariant; ExcelVersio...
  • ainixiaozhuzi
  • ainixiaozhuzi
  • 2013年11月02日 13:31
  • 3354

Delphi用ADO把Excel内容读取至表格

  • 2013年11月16日 09:27
  • 396KB
  • 下载

怎么在delphi中读取Excel数据(各种详细操作)

( 一 ) 使用动态创建的方法 首先创建 Excel 对象,使用ComObj : Var ExcelApp : Variant ; ExcelApp := CreateOleObject ...
  • zisongjia
  • zisongjia
  • 2017年03月15日 15:30
  • 1151

使用Adoconnection实现对两个数据库的操作

使用Adoconnection对两个数据库的操作将excel表中的数据导入到access,直接用adoconnection的excute方法会节省时间,如果直接对excel的cell操作,当数据量特别...
  • fei997yang
  • fei997yang
  • 2005年10月21日 17:23
  • 1104

Delphi使用AdoConnection连接Excel数据源

  • 2014年03月08日 14:43
  • 2KB
  • 下载

在Delphi中使用ADO直接訪問Excel數據文件

要用DELPHI中的ADO系列控件訪問Excel數據文件,首先應該建立一些基本概念。你需要將一個Excel數據文件想像為一個關係數據庫,Excel文件中的每個工作表就對應該數據庫中的一個表,而工作表中...
  • start8588
  • start8588
  • 2013年12月18日 16:21
  • 925

今天在Delphi中使用ADO连接Excel

今天在Delphi中使用ADO连接Excel(以前在一本书看过,复习一下-_-!!),有所收获,不敢独享。第一部分:1. 设置ADOConnection的ConnectionString属性的OLE ...
  • love3s
  • love3s
  • 2011年11月15日 17:00
  • 6493

delphi使用ado连接Excel

1. 设置ADOConnection的ConnectionString属性的OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider(这本来是用于连接Access数...
  • pojj123
  • pojj123
  • 2016年02月03日 17:01
  • 342

delphi 用ado连接excel2007

前段时间写了一个用delphi比较两个excel不同的程序。使用了ado ,但是发现怎么都连接不上。最后知道原因了。我使用的office是2007版本的。原因是office2007已经是基于xml的。...
  • kobaer
  • kobaer
  • 2009年10月11日 12:39
  • 3893
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:今天在Delphi中使用ADO连接Excel
举报原因:
原因补充:

(最多只允许输入30个字)