2016-08-08 9 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の下にデスクトップフォルダを作成し、サービスアカウントでフルアクセス権を付与しましたが、問題によって解決されませんでした。

お願いします。

+2

Excel + COM Automation + 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( "path"、oMissing、....); –

+0

誰でもこの問題を助けることができますか? {System.Runtime.InteropServices.COMException(0x800A03EC):Microsoft Excelは、 '\\ appcomp1 \ TEST \ Final.xls'ファイルにアクセスできません。いくつかの理由が考えられます。•ファイル名またはパスが存在しない。 ?ファイルが別のプログラムで使用されています。 ?保存しようとしているブックの名前は、現在開いているブックと同じです。 –

関連する問題