用于读取由其他用户独占打开的 Excel 文件的 OleDB 连接字符串
Posted
技术标签:
【中文标题】用于读取由其他用户独占打开的 Excel 文件的 OleDB 连接字符串【英文标题】:OleDB Connection string for reading an Excel file exclusively opened by other user 【发布时间】:2011-08-16 18:18:06 【问题描述】:谁能告诉我 OleDB 连接字符串用于读取其他用户打开的 Excel 文件 exclusively
?
我尝试了以下对我不起作用的连接字符串:-
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=0;Mode=Read;Extended Properties=\"Excel 8.0;HDR=YES;ReadOnly=true;\"";
此连接字符串被其他用户打开时抛出以下异常:-
The Microsoft Jet database engine cannot open the file ''. It is already opened exclusively by another user, or you need permission to view its data.
注意事项:
-
Excel 文件保持共享,以便多个用户可以打开它。
使用的提供程序:- Microsoft.Jet.OLEDB.4.0
Excel 文件类型:- MS Excel 97-2003 工作表
不允许复制文件
【问题讨论】:
如果您只想从文件中读取,您可以先创建一个Excel文件的副本,然后使用它删除。 由于多个用户正在编辑excel,如果我们复制文件会产生问题。 是的,我试过了。第一个用户加载包含 100 条记录的复制文件。在他保存它之前,另一个用户向文件中添加了一条记录,并将该文件保存为 101 条记录。现在第一个用户更新第 100 条记录并将复制的文件保存在主文件的顶部。所以最后主文件不会有101条记录。 好吧,我说:如果你只想从文件中读取...。当然,如果你也将数据写入 Excel 文件,它就不会起作用。 那么有什么办法可以处理这种情况吗? 【参考方案1】:我建议你使用后台线程每隔一段时间重试打开连接,当你连接到excel数据源时,将所有数据读入内存并立即关闭连接,以便其他进程可以访问该文件。
【讨论】:
以上是关于用于读取由其他用户独占打开的 Excel 文件的 OleDB 连接字符串的主要内容,如果未能解决你的问题,请参考以下文章
试图从文本文件中读取数据 - 它已被其他用户独占打开,或者您需要权限才能查看其数据