Kann Excel-Datei in C # nicht öffnen

9

Ich habe die folgende C # -Funktion in meinem Projekt, die ein vorhandenes Excel-Arbeitsmappenobjekt öffnen und zurückgeben soll:

%Vor%

Aber wenn ich es mit "C: \" und "scratch.xlsx" starte, gibt der Open () Aufruf den folgenden Fehler aus:

%Vor%

Die Datei und der Pfad existieren: Ich habe den Pfad aus der Fehlermeldung kopiert und in ein Befehlsfenster eingefügt, und die Datei wird in Excel geladen. Die Datei ist nicht gesperrt: Excel kann es gut öffnen, aber mein Programm kann nicht, auch nicht direkt nach einem Neustart. Ich versuche nicht, es zu speichern, ich versuche es zu öffnen, also ist die letzte Option irrelevant.

Ich verstehe nicht, warum dieses einfache Stück Code nicht funktioniert. Irgendwelche Vorschläge würden sehr geschätzt.

[Bearbeiten] Ich habe jetzt versucht, diese Datei von meinem persönlichen Netzlaufwerk (M :) und von einem USB-Stick zu öffnen. Alles vergebens.

Die Anwendung ist ein Windows-Dienst, der unter dem lokalen Systemkonto ausgeführt wird und Berichte generiert. Es schreibt derzeit CSV-Berichte ohne Zugriffsprobleme. Ich versuche nun, eine Excel-Datei als Vorlagebericht zu öffnen und verschiedene Felder auszufüllen. Beim Öffnen der Excel-Datei schlägt es fehl. Ich denke, dass die Administrator-Account-Option, die jeder vorschlägt, ein Ablenkungsmanöver ist, da es CSV-Dateien schreiben kann, wityh kein Problem. [/ edit]

--- Alistair.

    
user41013 08.07.2013, 15:46
quelle

3 Antworten

31

Ich habe die folgende Seite gefunden:

Ссылка

Wo es heißt, dass ...

  

Es wird nicht unterstützt, um Office-Produkte UI weniger zu automatisieren. Es scheint, dass Windows Server 2008 und Excel 2007 die angegebene Anweisung erzwingen.

Der Fragesteller beschreibt dann genau die Situation, in der ich mich mit einem Windows-Dienst befinde, der keine Excel-Datei öffnen kann, obwohl der gleiche Code in einem Befehlszeilenprogramm kein Problem hat.

Die Antwort empfiehlt, den folgenden Ordner zu erstellen:

  

Windows 2008 Server x64: C: \ Windows \ SysWOW64 \ config \ Systemprofil \ Desktop

     

Windows 2008 Server x86: C: \ Windows \ System32 \ Konfiguration \ Systemprofil \ Desktop

Ich habe es versucht und es hat Spaß gemacht! Kann jemand erklären, warum es benötigt wird und irgendwelche Nachteile?

Danke,

--- Alistair.

    
user41013 09.07.2013, 11:28
quelle
4

Führen Sie das Programm als admin aus, auf das C: / kann von einem Programm nicht zugegriffen werden, es sei denn, der Benutzer läuft als admin. Sie können Ihr Programm veranlassen, dass der Benutzer es als Admin ausführen muss, indem Sie das ApplicationManifest ändern: Wie erzwinge ich, dass meine .NET-Anwendung als Administrator ausgeführt wird?

    
Pharap 08.07.2013 15:49
quelle
2

Ich stieß auf das gleiche Problem und Ich habe Informationen über "Registry Hack" untersucht.

Immerhin habe ich eine andere Lösung gefunden, die keine Registrierungswerte verändert  und alles funktioniert einwandfrei.

Diese Lösung ist ...

· Windows 2008 Server x64

Bitte machen Sie diesen Ordner.

%Vor%

· Windows 2008 Server x 86

Bitte machen Sie diesen Ordner.

%Vor%

... anstelle von dcomcnfg.exe.

Dieser Vorgang hat Probleme mit der Büroautomatisierung in meinem System beseitigt.

Ein Desktop-Ordner scheint im Ordner systemprofile erforderlich zu sein, um die Datei nach Excel zu öffnen.

Es verschwindet von Windows2008, Windows2003 hatte den Ordner, und ich denke es verursacht diesen Fehler.

Ich denke, es ist sicherer als "Registry Hack".

Wenn Sie diese Lösung ausprobieren, lassen Sie mich bitte die Ergebnisse wissen.

    
thejustv 17.06.2015 13:20
quelle

Tags und Links