用ADO 连接 Excel
连接字符串:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\桌面\test1.xls;Extended Properties=Excel 8.0;Persist Security Info=False在delphi开发环境中,打开ADOQuery后,dbgrid中可以出现excel表中的数据,
但是只要一运行程序,就会提示:
microsoft   jet数据引擎打不开文件,它以被别的用户以独占方式打开,或没有查看数据的权限。查了一些资料:
有人说设置ReadOnly=0, 我在连接串中加入ReadOnly=0, 提示:找不到可安装的ISAM。请问怎么解决这个问题?注:
1、我确定excel没有打开;
2、我用的是管理员帐户登录windows;

解决方案 »

  1.   

    你试一下面的连接字符串var
      connstr:string;
    begin
      connstr:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ FileName +';Extended Properties=''Excel 8.0;HDR=Yes;IMEX=1;''';
    end;
      

  2.   

    没有碰到过
    月亮,下面这个干啥用的?
    IMEX=1;
      

  3.   

    如果确认Excel没有被别的文件打开的话,试验一下动态链接Excel(不要再设计的时候就链接,等运行的时候动态链接)。前几天也发生类似问题,最后不知道什么原因就好了,郁闷!
      

  4.   

    月亮兄!非常感谢!
    你的办法相当灵~另外问一个问题, 这样设置可以修改excel的内容吗?如何修改,是不是用updata语句就可以修改了?
      

  5.   

    1. test1.xls 是否被你用Excel软件打开了,若打开了,你把office关了再试试,
       另外查一下文件属性是否为只读,若是把只读属性去掉
    2. C:\Documents and Settings\Administrator\桌面\test1.xls路径中最好不要出现汉字,出现汉字就易出现一些问题
    3. Extended Properties=Excel 8.0 你用的office版本是多少?
      若是office2000,则应该用Excel 9.0,Dephi不支持则test1.xls应该采用向下兼容方式创建我估计是版本的问题,office向下自动转换时将以只读副本方式打开
      

  6.   

    office2000以下格式是兼容的
    officeXP则要采用兼容office2000的格式保存才能在delphi6或7中顺利连接
      

  7.   

    哈哈,第一次回贴。
    这个问题正好我刚刚碰到了运行时提示,EXCEL文件正在被独占使用。
    因为你的DELPHI正在使用这个EXCEL文件啊,所以自己写的程序就不能再打开那个EXCEL了。
    我只有一个笨办法,就是编译好后,关掉DELPHI,再运行你的那个程序,绝对可以的。