如何用delphi编程实现access和excel之间数据的互导!我刚学数据库编程!
解决方案 »
- sql中数字型变量怎么表示
- bde连接数据库的问题。
- 关于循环的问题?help
- 我在win98中使用命令scm.exe -Action 6 -Silent 1 -Service mssqlserver无法停止sqlservr,请大家指点错在哪里?谢谢!
- clientdataset的Filter属性,用的时候要注意那些问题啊?
- NTSERVER中调用SHELLAPI大多会失败,请问是怎么回事?
- 谁能提供一些好的按钮图标
- SQl 中like如何使用变量
- InstallShield Developer 7.0 East Language Pack 的问题!!!
- 有关SQL语句的问题,请问这个SQL语句应如何改写,高手快进!!!!!
- ■■■我学DELPHI不久,我想找一本介绍DELPHI内部函数的参考书。高分想送!
- 用Query对数据库进行Update操作,麻烦帮忙看看,错在哪里?
请不要用odbc的microsoft excel driver(*.xls)来连,直接用Microsoft.Jet.OLEDB来连,设置Extended Properties=excel 8.0,ado组件的connectionstring像下面这样.
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\我的文档\人事资料\在职\200205在岗人员名单.xls;Extended Properties=excel 8.0;Persist Security Info=False用adotable连接后设置tabledirect为true,你的excel数据库要有一个字段名,就像其它数据库一样是一个二维表.
你好,不好意思再一次打扰你,是这样的,用jet.oledb.4.0不是只能连access数据库吗?连xls文件测试连接不成功, 当然我按你所说的改了connectionstring,是可以连上,但如果用dbgrid显示数据后,我想把数据全部导入另一个数据表中的话,能不能用一个SQL语句来取得这些数据呢,难道还要一条一条地读出来再写入吗?jet.oledb.4.0功能强大,不但可以连接access,还可以连接dbase,paradox,excel,text等几乎所有的本地数据库。你可以一条一条地读出来再写入,也可以用一条sql语句来做,我想这两种方式的效率你应该心中有数了吧?~~
下面我就说一说如何把excel数据导入成access数据库。
假如你在d:\下有一个excel文件叫tmp.xls,其中有一个工作表叫sheet1,表中的数据如下
业务统计表
字段1 字段2 字段3 字段4
2 2 4 2
2 4 2 2
2 3 1 3
2 1 1 2
1 1 2 1
现在要把这个表导入D:\test.mdb中并命名为ywb3。操作步骤为:
1、确保已经有D:\test.mdb这个文件,并且其中没有ywb3这个表。
2、打开tmp.xls,把你要导入的数据选起来,包括字段名(“字段1、字段2等等,不包括表题名("业务统计表"),起一个名称ywb3(操作方法为在excel名称框中输入ywb3按回车确认)。
3、设置ado组件的connectionstring为
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\tmp.xls;Extended Properties=excel 8.0;Persist Security Info=False
4、这一步非常关键,如果你是用adotable,把tabledirect设为false,(true只有在excel表没有表题,是一个纯二维表是才能用),并且在tablename中选ywb3(就是你是excel名称框中输入的名称,其中有一些是你在excel工作薄中的工作表名+$,只有在没有定义名称的情况下才用选他们),就可以正确的在dbgrid中显示、处理数据了;要把数据导出成access文件,要使用adoquery或adodataset或adocommand组件,我以adocommand组件为例,设置commandtext为
select * into ywb3 in "d:\test.mdb" from ywb3,然后执行adocommand1.Execute就可以把数据导出到d:\test.mdb中的ywb3了,当然你还可以加where条件来限制导出的数据。
5、补充说明
你可以把excel中的一个工作表中的多块数据区域定义成不同的名称,在ado中看来就是一张不同的表,你就可以对这些表进行各种sql操作了,比如查询,更新,删除,甚至删除等等。
你可以在ACCESS里面直接打开EXECL文件
你看看
在很多 VB 的MDB文件书籍中,都会很完整的提到:如何由其他种类的文件中將资料导入MDB文件,但是却很少有书提到:如何將MDB文件中的资料,导出到各种不同的文件类型的文件中,连 VB 的 Help 中也是这样!或许是大家都认为MDB文件主题的重点是在MDB文件本身吧!但是,在实际的MDB文件程式運用中,却常常需要將MDB文件导出到各种不同的文件类型的文件中,这些文件可能是 DBase文件、文本文件 (.Txt)、Excel 文件、Html 文件、Access 文件或其他类型的MDB文件文件 (ODBC)...等。在本主题中,考虑到並不是每一个人都有 Oracle 或 SQL Server 的环境,为了让大家都能夠实行,我们將以 Access MDB文件来作练习,而练习的文件也使用 VB 本身提供的 Biblio.mdb (位于各版本 VB 的目录下)。预计要练习导出的文件类型有五种:DBase文件、文本文件 (.Txt)、Html 文件、Excel 文件、Access 文件。除了这五种之外,下面的命令可以將MDB文件导出到任一种 VB 支持的MDB文件或文件中。在练习之前,要將导出文件的 SQL 命令先说明一下:SELECT Table.Fields INTO [dbms type;DATABASE=path].[unqualified filename] FROM [Table or Tables]
SELECT Table.Fields INTO [MDB文件种类;DATABASE=MDB文件路径].[MDB文件文件名称] FROM [Table or Tables]至于【MDB文件种类】及【MDB文件路径】,视MDB文件或文件类型之不同而异,详见【注一】。
如果上面说的都清楚了,那我们要开始这一个练习了!在 Form 上放置一个 CommandButton,加入 Microsoft DAO 3.51 Object Library,我们將使用 Biblio.mdb 的 authors Table,在 Command1_Click 中加入以下程序代码:Dim db As Database
Set db = Workspaces(0).OpenDatabase(App.Path & "\biblio.mdb")
'db.execute "SELECT Table.Fields INTO [dbms type;DATABASE=path].[unqualified filename] FROM [Table or Tables]"在以上程式中,db.execute 指令行之指令依MDB文件或文件的种类说明如下:一、DBase文件SQL 命令:SELECT * INTO [dBase III;DATABASE=MDB文件路径].[dbase文件名称] FROM [authors]
db.Execute "SELECT * INTO [dBase III;DATABASE=C:\test].[authors.DBF] FROM [authors]"
注意事項:
1、authors.DBF 事先不可存在,否则会产生错误!
2、若您沒有 Dbase,您可以使用 Access 来连結这个 Table,以便观察結果!二、文本文件 (.Txt)SQL 命令:SELECT * INTO [Text;DATABASE=文本文件路径].[文本文件名称] FROM [authors]
db.Execute "SELECT * INTO [Text;DATABASE=C:\test].[authors.TXT] FROM [authors]"
注意事項:
1、authors.TXT 事先不可存在,否则会产生错误!
2、此命令会产生的文件有二个,第一个就是文本文件 authors.TXT,第二个是 Schema.ini。
3、文本文件之格式为 CSV 之文件格式,以逗点分开,实际呈现方式如下: "Au_ID","Author","Year Born"
1,"Jacobs, Russell",1950
2,"Metzger, Philip W.",19424、Schema.ini 若事先不存在会新产生一个,若已存在,则会在原文件后面直接 Append。
5、至于 Schema.ini 的內容为此次导出的相关资讯,格式同一般的 Ini 档,详細內容如下: [authors.TXT]
ColNameHeader=True
CharacterSet=OEM
Format=CSVDelimited
Col1=Au_ID Integer
Col2=Author Char Width 50
Col3="Year Born" Short三、Html 文件SQL 命令:SELECT * INTO [Excel 8.0;DATABASE=Html文件路径].[Html文件名称] FROM [authors]
db.Execute "SELECT * INTO [HTML Export;DATABASE=C:\test].[authors.HTM] FROM [authors]"
注意事項:
1、authors.HTM 事先不可存在,否则会产生错误!
2、此命令会产生的文件有二个,第一个就是文本文件 authors.HTM,第二个是 Schema.ini。
3、Schema.ini 若事先不存在会新产生一个,若已存在,则会在原文件后面直接 Append。
4、至于 Schema.ini 的內容为此次导出的相关资讯,格式同一般的 Ini 档,详細內容如下: [authors.HTM]
ColNameHeader=True
CharacterSet=ANSI
Format=HTML
Col1=Au_ID Integer
Col2=Author Char Width 50
Col3="Year Born" Short四、Excel 文件SQL 命令:SELECT * INTO [Excel 8.0;DATABASE=文件路径+档名].[工作表名称] FROM [authors]
db.Execute "SELECT * INTO [Excel 8.0;DATABASE=C:\test\authors.XLS].[authors] FROM [authors]"
注意事項:
1、authors.XLS 可事先存在,也可以不存在,会自动产生一个。
2、工作表 authors 事先不可存在,否则会产生错误!五、Access 文件SQL 命令:SELECT * INTO [新MDB文件路径+档名][新表名称] FROM [authors]
'导出到同一MDB文件 ( 新 Table 为 authors1 )
'新 Table authors1 事先不可存在,否则会产生错误!
db.Execute "SELECT * INTO [authors1] FROM [authors]"
'导出到不同的MDB文件 ( 新MDB文件为 db1,新 Table 为 authors )
'新MDB文件 db1事先必須存在,否则会产生错误!
'但是其中新 Table authors 事先不可存在,否则会产生错误!
db.Execute "SELECT * INTO [C:\test\db1.mdb].[authors] FROM [authors]" 注一:各种可能的MDB文件种类 Connect 属性設定方式:MDB文件种类 MDB文件宣告方式 MDB文件路径 (或加上档名)
Microsoft Jet Database [database]; drive:\path\filename.mdb
dBASE III dBASE III; drive:\path
dBASE IV dBASE IV; drive:\path
dBASE 5 dBASE 5.0; drive:\path
Paradox 3.x Paradox 3.x; drive:\path
Paradox 4.x Paradox 4.x; drive:\path
Paradox 5.x Paradox 5.x; drive:\path
Microsoft FoxPro 2.0 FoxPro 2.0; drive:\path
Microsoft FoxPro 2.5 FoxPro 2.5; drive:\path
Microsoft FoxPro 2.6
假设有一个excel表d:\在职职工库.xls,簿中有一个表在职职工,其中有如下数据
2002年5月职工花名册
序号 姓名 性别 民族 工资
1 张三 男 汉 800.00
2 李四 男 回 1200.00
3 张芸 女 汉 852.00
4 何天荣 男 满 962.00现要把其中的职工数据导出到d:\zghmc.mdb中的zghmc表首先用excel打开d:\在职职工库.xls,选择包含职工数据的区域,不包括标题"2002年5月职工花名册",执行"插入->名称->定义",输入zgk,为所选的数据定义一个名称,关闭excel.在project中加入一个ADOConnection1、一个ADOQuery1,添加以下代码:
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\在职职工库.xls;Extended Properties=excel 8.0;Persist Security Info=False';
ADOQuery1.Connection:= ADOConnection1;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * into zghmc in "d:\zghmc.mdb" from zgk' );
ADOQuery1.ExecSQL;
ADOQuery1.Close;然后编译运行,就把excel中的职工数据导出到d:\zghmc.mdb中了。
如果要在程序中显示excel中的数据,添加一个ADOTable1,设置Connection为ADOConnection1就可以了.如果要把access导出成excel,连接好mdb文件后,改成
('select * into zghmc in "d:\zghmc.xls" "excel 8.0;" from zgk' );
[odbc 驱动程序 管理器]未发现数据源名称并未指定默认驱动程序。
[email protected]谢谢。