能不能将excel里的数据直接导入access数据库里!!不是在程序里对excel操作!而是用access数据库直接调用excel的数据!!对数据库进行更新!!

解决方案 »

  1.   

    可以我写过这样的程序
    也可以用f1book
      

  2.   

    可以,下面是以前我回答别人所定的一些东西
    你好!请不要用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操作了,比如查询,更新,删除,甚至删除等等。
      

  3.   

    我用的是odbc数据库引擎~~