【问题标题】:Excel is not able to access from C#Excel 无法从 C# 访问
【发布时间】:2016-12-14 06:18:42
【问题描述】:

这是关于我们在生产中面临的 Excel 问题。我们有一个 asp.net 应用程序,它正在从共享驱动器中读取 Excel。我们的服务器上的 Dcom 配置和安全设置存在问题,导致该过程无法完成。

我们目前从 Dcom Identity 选项卡中定义的服务帐户运行该进程。

我们对应用程序从中读取文件的服务帐户的共享驱动器拥有完全权限。但我们仍然收到如下错误。 (错误消息:Microsoft 无法访问该文件:有几个可能的原因:文件名或路径不存在,该文件正在被另一个程序使用,您尝试保存的工作簿与当前打开的工作簿同名)

我们还拥有 excel 位置上服务帐户的完全权限。由于应用程序将由不同的用户运行,我们无法将 DCom 设置更改为“交互式用户”。企业希望应用程序在服务帐户上运行。 如果我们将其更改为“交互式用户”,它会按预期工作,并且 Excel 可以毫无问题地打开。

服务帐户也被添加到 COM 属性设置中。

我在 Windows\System32\Config\systemprofile\desktop 和 Windows\SysWow64\Config\systemprofile\desktop 下创建了 Desktop 文件夹,并授予了服务帐户的完全权限,但问题并未解决问题。

你能帮助我们吗?

【问题讨论】:

  • Excel + COM 自动化 + ASP.Net 强烈建议不要使用,它根本不适合在那种环境中工作。如果您只需要阅读文件,还有其他库/odbc 方法。
  • 在这个问题上寻求帮助?感谢您的建议
  • 使用开放的 XML SDK。 forums.asp.net/t/…

标签: c# asp.net excel


【解决方案1】:
string con =
  @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\temp\test.xls;" + 
  @"Extended Properties='Excel 8.0;HDR=Yes;'";    
using(OleDbConnection connection = new OleDbConnection(con))
{
    connection.Open();
    OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection); 
    using(OleDbDataReader dr = command.ExecuteReader())
    {
         while(dr.Read())
         {
             var row1Col0 = dr[0];
             Console.WriteLine(row1Col0);
         }
    }
}

试试这个。猜猜这对你有用

【讨论】:

  • 您好 Tehseen,感谢您的回复我尝试了上面的代码仍然遇到同样的错误。它在下面的代码行中引发错误。 excel.Workbooks.Open("路径",oMissing,....);
  • 有人可以帮忙解决这个问题吗? {System.Runtime.InteropServices.COMException (0x800A03EC):Microsoft Excel 无法访问文件 '\\appcomp1\TEST\Final.xls'。有几个可能的原因: • 文件名或路径不存在。 • 该文件正被另一个程序使用。 • 您尝试保存的工作簿与当前打开的工作簿同名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 2013-06-14
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多