2016-08-08 119 views
0

這是關於我們在生產中遇到的Excel問題。我們有一個正在從共享驅動器讀取Excel的asp.net應用程序。我們的服務器上存在Dcom配置和安全設置問題,導致無法完成此過程。Excel無法從C#訪問

我們目前正在從Dcom Identity選項卡中定義的服務帳戶運行此過程。

我們擁有應用程序讀取文件的服務帳戶的共享驅動器的完全權限。但是我們仍然得到如下的錯誤。 (錯誤消息:Microsoft無法訪問該文件:有幾種可能的原因:文件名或路徑不存在,該文件正在被另一個程序使用,您試圖保存的工作簿與當前打開的工作簿名稱相同)

我們對excel位置上的服務帳戶也有完全許可。由於應用程序將由不同的用戶運行,因此我們不能將DCom設置更改爲「交互式用戶」。企業希望應用程序在服務帳戶上運行。 如果我們將其更改爲「交互式用戶」,它就像預期的那樣工作,並且Excel沒有任何問題地打開。

服務帳戶也被添加到COM屬性設置。

我在Windows \ System32 \ Config \ systemprofile \ desktop和Windows \ SysWow64 \ Config \ systemprofile \ desktop下創建了Desktop文件夾,並給出了服務帳戶的完全權限,但是問題沒有解決問題。

請幫助我們。

+2

Excel + COM自動化+ ASP.Net非常強烈建議不要,它的設計根本不適用於該環境。如果您只需要閱讀該文件,則還有其他庫/ odbc方法。 –

+0

在這個問題上尋找一些幫助?讚賞你的建議 –

回答

-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); 
     } 
    } 
} 

試試這個。猜測這對你很好

+0

嗨Tehseen,感謝您的回覆我嘗試了上述代碼,但我仍然遇到同樣的錯誤。它在下面的代碼行上拋出錯誤。 excel.Workbooks.Open( 「路徑」,oMissing,....); –

+0

有人可以幫助解決這個問題嗎? {System.Runtime.InteropServices.COMException(0x800A03EC):Microsoft Excel無法訪問文件'\\ appcomp1 \ TEST \ Final.xls'。有幾種可能的原因:?文件名或路徑不存在。 •該文件正在被另一個程序使用。 ?試圖保存的工作簿與當前打開的工作簿具有相同的名稱。 –