wake-up-neo.com

Microsoft Office Excel kann nicht auf die Datei "c: \ inetpub \ wwwroot \ Timesheet \ App_Data \ Template.xlsx" zugreifen.

Ich habe meinen Code wie folgt:

Microsoft.Office.Interop.Excel.Application oXL = null;
Microsoft.Office.Interop.Excel.Sheets sheets;
Application Excel = new Microsoft.Office.Interop.Excel.Application();


Excel.Workbooks.Add(System.Reflection.Missing.Value);

/*
    * Here is the complete detail's about Workbook.Open()
    * 
    *  Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, 
    *  Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin,
    *  Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)
    */

Workbook workbook = Excel.Workbooks.Open(
    System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Template.xlsx"),
    Missing.Value, true, Missing.Value, Missing.Value,
    Missing.Value, Missing.Value, Missing.Value,
    Missing.Value, Missing.Value, Missing.Value,
    Missing.Value, Missing.Value, Missing.Value,
    Missing.Value);
sheets = workbook.Worksheets;

Nun zur Zeile: -

workbook = Excel.Workbooks.Open(
    System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Template.xlsx"),
    Missing.Value, true, Missing.Value, Missing.Value,
    Missing.Value, Missing.Value, Missing.Value,
    Missing.Value, Missing.Value, Missing.Value,
    Missing.Value, Missing.Value, Missing.Value,
    Missing.Value);

Es wird direkt aus dem Visual Studio (F5) ausgeführt, aber wenn ich versuche, es mit IIS zuzugreifen, funktioniert es nicht.

Microsoft Office Excel kann nicht auf die Datei "c:\inetpub\wwwroot\Timesheet\App_Data\Template.xlsx" 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.

Ich habe die Arbeit herum probiert als: -

  • Der Ordner und die Datei sind vorhanden und gewähren dem IUSR _ ### (IIS-Benutzer) und dem ASPNET-Benutzer in dem Ordner, in dem sich die Datei befindet, Zugriff.
    • Bei Component Services (DCOM) erhalten Sie Zugriff auf den entsprechenden Benutzer.

Ich habe bereits alle Berechtigungen für den Ordner erteilt, in dem die Vorlage (.xlsx) vorhanden ist

Irgendwelche Vorschläge??

43
Shubh

Versuche dies:

  1. Erstellen Sie das Verzeichnis

C:\Windows\SysWOW64\config\systemprofile\Desktop

(für die 32-Bit-Version von Excel/Office auf einem 64-Bit-Windows-Computer) oder

C:\Windows\System32\config\systemprofile\Desktop

(Für eine 32-Bit-Version von Office auf einem 32-Bit-Windows-Computer oder eine 64-Bit-Version von Office auf einem 64-Bit-Windows-Computer).

  1. Fügen Sie für das Verzeichnis Desktop Vollzugriffsrechte für den betreffenden Benutzer ( Zum Beispiel in Win7 & IIS 7 & DefaultAppPool Berechtigungen für Benutzer festlegen IIS AppPool\DefaultAppPool ).

Ursprünglicher Beitrag mit Antwort:

106
Eric Bonnot

Lassen Sie mich feststellen, dass das Hinzufügen des Verzeichnisses c:\windows\syswow64\config\systemprofile\desktop an meiner Stelle nicht funktioniert hat.

Der Punkt ist, dass WOW64 unter Windows64 für Windows steht, was bedeutet, dass es tatsächlich für 32-Bit-Programme gilt, die auf dem 64-Bit-Betriebssystem ausgeführt werden.

Da ich 64-Bit-Excel installiert habe, stellte sich heraus, dass das richtige Verzeichnis c:\windows\system32\config\systemprofile\desktop ist

12
Nikhil

Ich möchte etwas zur Antwort von Eric Bonnot hinzufügen: Die Antwort hat teilweise geklappt, als ich auf einem IIS Server mit einem Nicht-Administrator-Benutzer mit dem PowerPoint PIA gearbeitet habe .

Mir ist aufgefallen, dass ich eine pptx-Datei nicht öffnen kann, wenn diese ein Medium (z. B. ein Bild) enthält.

Der "Hack" bestand darin, dem Windows-Benutzer (der die PIA verwendet) auch die Rechte für die Verzeichnisse systemprofile/AppData hinzuzufügen.

Hoffe das hilft

1
Amaury Bauzac

In meinem Fall folgte ich den Vorschlägen hier und löste das Problem.

Schritte:

  1. Führe dcomcnfg aus
  2. Wechseln Sie zu Konsolenstamm\Komponentendienste\Computer\Arbeitsplatz\DCOM-Konfiguration\Microsoft Excel-Anwendung
  3. Rechtsklick Microsoft Excel-Anwendung
  4. Wählen Sie Eigenschaften
  5. Gehen Sie zur Registerkarte Identität
  6. Wählen Sie den interaktiven Benutzer.

Wenn Sie diesen Pfad in Schritt 2 nicht finden können, versuchen Sie, mmc comexp.msc /32 Anstelle von dcomcnfg auszuführen.

1
datchung

Ich war zuvor versucht, dieses Problem dann habe ich gelöst.

Lösung:

Ich habe die vollständige Berechtigung für einen bestimmten Ordner (Unterordner und Dateien) festgelegt und überprüft, ob sie ordnungsgemäß funktioniert.

0
user2617875

Ich habe meine WCF in einen Windows-Dienst eingewickelt. Das Erstellen der Desktop-Ordner löste es für mich auf einem Computer, aber nicht auf einem anderen.

Mein Problem am Ende war, dass mein Windows-Dienst nicht unter einem aktiven Benutzer des Computers ausgeführt wurde. Die Konfiguration des Dienstes für die Ausführung unter einem Benutzer, der auf dem Computer aktiv ist, hat dieses Problem für mich bisher gelöst.

Nur die Kombination von

  • Vorhandener Desktop-Ordner
  • Dienst, der unter einem echten Benutzerkonto ausgeführt wird

hat es für mich funktioniert.

Dieser Artikel führte mich zur vollständigen Lösung: Kann nicht auf Excel-Datei zugreifen

0
Florian Moser