2016-05-16 9 views
0

Ich möchte eine Excel-Datei an bestimmten Ort und bestimmten Namen in C# erstellen. Können wir File.Create("Filename.xlsx") dafür verwenden?Können wir Excel-Datei mit File.Create erstellen?

Dies erstellt die Datei, aber wenn wir versuchen, es zu öffnen; es sagt Problem in Erweiterung.

Ich habe einen anderen Weg versucht, mit ExcelApp. Auf diese Weise wird der Excel-Dateistandard unter "~ Documents \ Sheet1.xlsx" erstellt. Daher kann ich in diesem Fall weder den Speicherort noch den Dateinamen angeben.

Excel.Application excelApp = new Excel.Application(); 
Excel.Workbook excelWorkBook = excelApp.Workbooks.Add(1); 

Die Frage ist ähnlich - Specify Path and filename while creating excel

Da ich nicht in der Lage bin zu kommentieren, ich habe wieder zu fragen. Ich habe versucht, die Antwort in Link zur Verfügung gestellt.

Mein Code:

Excel.Application excelApp = new Excel.Application(); 
    object missing = System.Reflection.Missing.Value; 
    Excel.Workbook excelWorkBook = excelApp.Workbooks.Add(missing); 

//.... 
     Fill excelWorkbook after creating worksheets 
....// 

     excelWorkBook.Save(); 

Jetzt, da pro Vorschlag, statt Speichern, ich habe verwendet SaveAs.

excelWorkBook.SaveAs(@"E:\\MyExcelBook\\abcd.xlsx", 
         Excel.XlFileFormat.xlOpenXMLWorkbook, missing, missing, 
         false, false, Excel.XlSaveAsAccessMode.xlNoChange, 
         missing, missing, missing, missing, missing); 

Es gibt mir Fehler: * Die Datei kann nicht zugegriffen werden. Versuchen Sie eine der folgenden: \ n \ n • Stellen Sie sicher, dass der angegebene Ordner existiert. \ n • Stellen Sie sicher, dass der Ordner, der die Datei enthält, nicht schreibgeschützt ist. \ n • Stellen Sie sicher, dass der Dateiname keines der folgenden Zeichen enthält: <>? []: | oder \ n • Stellen Sie sicher, dass der Datei-/Pfadname nicht mehr als 218 Zeichen enthält.

Bitte sagen Sie mir, wo mache ich falsch?

+0

Hat nicht die Antwort auf die ähnliche Frage erklären, was Sie tun müssen? Verwenden Sie 'excelWorkBook.SaveAs (" c: \ pfad-zu-egal ", ...' – Sphinxxx

+0

Nur weil Sie eine "leere" Datei mit der Erweiterung .xlsx speichern, bedeutet das nicht, dass Excel eine solche Datei lesen kann.Sie können OpenXML, ClosedXML (meine bevorzugte), interop (yucky) und ich bin sicher, dass viele andere Methoden zum Erstellen eines Excel-Dokuments – Kritner

+0

Dieser Link sollte Ihnen hilfreich sein [Mit COM-Interop] (https://msdn.microsoft. com/de-de/library/ms173186 (v = vs.80) .aspx). – Pushpendra

Antwort

1

Just because you save an "empty" file with an extension of .xlsx doesn't mean excel is able to read such a file. You can use OpenXML, ClosedXML (my preferred), interop (yucky) and I'm sure many other methods of creating an excel document

File.Create(...) ist nicht viel anders als die rechte Maustaste in Datei-Explorer, neues Textdokument zu wählen und es von "New Textdatei.txt" auf "Neuen Text Document.xlsx" umbenennen. Yeah, dass Erweiterung ist Excel, aber Excel kann nicht lesen eine leere Datei, die es ist eine Excel-Datei.

Sie können jede der Bibliotheken nutzen, um Sie Excel-Dateien zu erstellen:

  1. ClosedXML
  2. OpenXML
  3. Interop

etc. Die meisten "Speichern" Methoden oder „Speichern unter "Methoden innerhalb dieser Bibliotheken würden (wahrscheinlich) die Datei im Arbeitsverzeichnis standardmäßig erstellen, aber Sie können auch ein Verzeichnis angeben, in dem sie erstellt werden sollen.

Genau wie die Antwort in der verknüpften Frage zeigt:

workbook.SaveAs(@"c:\documents\book1.xlsx", 
     Excel.XlFileFormat.xlOpenXMLWorkbook, missing, missing, 
     false, false, Excel.XlSaveAsAccessMode.xlNoChange, 
     missing, missing, missing, missing, missing); 
+0

Ich habe die Frage aktualisiert, weil ich bereits versucht habe, was Sie vorgeschlagen haben. Ich werde darüber nachdenken, es sei denn, ich könnte etwas finden. –

+0

brauchen Sie nicht *** sowohl *** '@' und maskiert '\\\' - der eine oder andere. – Kritner

+0

oh ... habe das nicht bemerkt. Es funktioniert jetzt. Ich dachte, dass vielleicht ein Fehler in der Syntax vorhanden ist. Vielen Dank. –

Verwandte Themen