Datei in Ich habe folgende C# Funktion in meinem Projekt, das ein vorhandenes Excel-Arbeitsmappe-Objekt öffnen sollte und zurück:kann nicht geöffnet werden Excel C#
Application _excelApp;
// ...
private Workbook OpenXL(string path, string filename)
{
try
{
if (_excelApp == null)
{
_excelApp = new Application();
}
Workbook workBook = _excelApp.Workbooks.Open(path + filename, // Name
0, // Do not update links
true); // Open read-only
return workBook;
}
catch (Exception e)
{
_excelApp = null;
throw new ArgumentException("Error opening " + path + filename, e);
}
}
Aber wenn ich es laufe mit „C: \“ und „scratch.xlsx“, wirft die Open() Aufruf die folgenden Fehler:
Microsoft Excel cannot access the file 'C:\scratch.xlsx'. There are several possible reasons:
• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open workbook.
die Datei und den Pfad existiert: ich habe den Weg von der Fehlermeldung kopiert und in ein Befehlsfenster eingefügt und die Datei lädt in Excel. Die Datei ist nicht gesperrt: Excel kann es gut öffnen, aber mein Programm kann nicht, auch direkt nach einem Neustart. Ich versuche nicht, es zu speichern, ich versuche es zu öffnen, so dass die letzte Option irrelevant ist.
Ich bin nicht in der Lage zu verstehen, 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 eigentlich 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.
Versuchen Sie, als Administrator ausgeführt werden? Hat das Benutzerkonto Leseberechtigungen für die Datei? –
Sind Sie oder C# entkommen die '\'? – Kami
Verbinden Sie niemals Pfade wie 'Pfad + Dateiname'; Verwenden Sie 'Path.Combine (Pfad, Dateiname)' stattdessen! – Marco