2016-08-08 9 views
0

zugreifen Dies ist in Bezug auf Excel-Problem, mit dem wir in der Produktion konfrontiert sind. Wir haben eine asp.net-Anwendung, die ein Excel von freigegebenen Laufwerk liest. Wir haben Probleme mit den Konfigurations- und Sicherheitseinstellungen von Dcom auf unserem Server, die verhindern, dass der Vorgang abgeschlossen wird.Excel kann nicht von C#

Wir führen den Prozess derzeit vom Dienstkonto aus, das auf der Registerkarte Dcom-Identität definiert ist.

Wir haben die volle Berechtigung für das freigegebene Laufwerk für das Dienstkonto, von wo die Anwendung die Datei liest. Aber immer noch erhalten wir den Fehler wie unten. (Fehlermeldung: Microsoft kann nicht auf die Datei zugreifen: Es gibt mehrere mögliche Gründe: Der Dateiname oder Pfad existiert nicht, die Datei wird von einem anderen Programm verwendet. Die Arbeitsmappe, die Sie speichern möchten, hat denselben Namen wie eine aktuell geöffnete Arbeitsmappe)

Wir haben auch volle Erlaubnis für Service-Konto auf dem Excel-Standort. Da die Anwendung von verschiedenen Benutzern ausgeführt wird, können wir die DCom-Einstellung nicht auf "Interaktiver Benutzer" ändern. Unternehmen möchte, dass die Anwendung mit einem Dienstkonto ausgeführt wird. Wenn wir es in "Interaktiver Benutzer" ändern, funktioniert es wie erwartet und Excel öffnet ohne irgendein Problem.

Dienstkonto wird auch den COM-Eigenschaftseinstellungen hinzugefügt.

Ich erstellte Desktop-Ordner unter Windows \ System32 \ Config \ Systemprofil \ Desktop und Windows \ SysWow64 \ Config \ Systemprofil \ Desktop und gab vollständige Berechtigungen mit Dienstkonto, aber Problem das Problem nicht gelöst.

Könnten Sie uns bitte helfen.

+2

Excel + COM Automation + ASP.Net wird sehr dringend davon abgeraten, Es ist einfach nicht entworfen, um in dieser Umgebung zu arbeiten. Wenn Sie nur die Datei lesen müssen, gibt es andere Bibliotheken/odbc Ansätze. –

+0

Suchen Sie Hilfe zu diesem Thema? Schätze deinen Vorschlag –

Antwort

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

versuchen Sie dies. denke, das wird gut für Sie arbeiten

+0

Hallo Tehseen, danke für deine Antwort Ich habe den obigen Code ausprobiert, trotzdem bekomme ich den gleichen Fehler. Es wirft den Fehler unter der Codezeile auf. excel.Workbooks.Open ("Pfad", oMissing, ....); –

+0

Kann jemand zu diesem Thema helfen? {System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Excel kann nicht auf die Datei '\\ appcomp1 \ TEST \ Final.xls' zugreifen. Dafür gibt es mehrere mögliche Gründe: • Der Dateiname oder Pfad existiert nicht. • Die Datei wird von einem anderen Programm verwendet. ? Die Arbeitsmappe, die Sie speichern möchten, hat den gleichen Namen wie eine aktuell geöffnete Arbeitsmappe. –