Hallo zusammen,
ich möchte eine Klasse machen, die beim ersten Aufruf ein Excel File mit einem Sheet erzeugt und speichert. Beim zweiten Aufruf soll geprüft werden ob das File schon vorhanden ist, wenn ja soll das File geöffnet, und ein weiteres Sheet hinzugefügt werden. Ich hab mir das so vorgestellt:
string curFile = @"D:\ExcelSheet.xlsx";
try
{
if (File.Exists(curFile))
{
ExcelApp = new Microsoft.Office.Interop.Excel.Application();
ExcelApp.DisplayAlerts = false;
ExcelApp.Visible = false;
ExcelApp.ScreenUpdating = false;
ExcelApp.Workbooks.Open(curFile);
ExcelWorksheet = (Worksheet)ExcelWorkbook.Worksheets.Add();
ExcelWorksheet.Name = "Torque";
ExcelWorksheet.Cells[1, 1] = "Test2";
ExcelWorkbook.SaveAs(curFile);
ExcelWorkbook.Close();
Marshal.FinalReleaseComObject(ExcelWorkbook);
ExcelApp.Quit();
Marshal.FinalReleaseComObject(ExcelApp);
ExcelApp = null;
ExcelWorksheet = null;
}
if (File.Exists(curFile) == false)
{
ExcelApp = new Microsoft.Office.Interop.Excel.Application();
ExcelApp.DisplayAlerts = false;
ExcelApp.Visible = false;
ExcelApp.ScreenUpdating = false;
ExcelWorkbook = ExcelApp.Workbooks.Add();
ExcelWorksheet = (Worksheet)ExcelWorkbook.Worksheets.get_Item(1);
ExcelWorksheet.Name = "IDMAP";
ExcelWorksheet.Cells[1, 1] = "Test";
ExcelWorkbook.SaveAs(curFile);
ExcelWorkbook.Close();
Marshal.FinalReleaseComObject(ExcelWorkbook);
ExcelApp.Quit();
Marshal.FinalReleaseComObject(ExcelApp);
ExcelApp = null;
ExcelWorksheet = null;
// Process.Start(curFile);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Das Erstellen und Schreiben beim ersten Aufruf geht, beim zweiten bekomme ich die Fehlermeldung > Fehlermeldung:
"System.NullReferenceException" Da beim Versuch das nächste Sheet hinzuzufügen, ExcelWorksheet immer Null ist. Was ist denn da falsch? Danke schon mal und Gruß
Bitte beachte [Tipp] Anfängerhinweis == true / == false 😉
**:::
Danke für den ==false Hinweis! /blush.
hmm ich checks leider nicht. Wie laden? ich mach doch
ExcelApp.Workbooks.Open(curFile);
Oh, mein Fehler 😃. Du musst dem ExcelWorkbook auch dein geöffnetes Sheet zuweisen, ansonsten ist dies (vmtl.) null.
Ich checks immer noch nicht 😕 Beim ersten Aufruf funktionierst ja, der zweite is doch beinahe gleich. Kannst Du mir vielleicht sagen wie ich dem Workbook das sheet zuweise?
Danke nochmal für die Antworten und die Hilfe!
Dein Aufruf
ExcelApp.Workbooks.Open(curFile);
ändern in
ExcelWorkbook = ExcelApp.Workbooks.Open(curFile);