Laden...

Excel File erstellen beim Start von Programm wirft bei zweitem Start eine Nullreference-Exception

Erstellt von BIT_0_1 vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.022 Views
B
BIT_0_1 Themenstarter:in
65 Beiträge seit 2016
vor 8 Jahren
Excel File erstellen beim Start von Programm wirft bei zweitem Start eine Nullreference-Exception

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ß

T
314 Beiträge seit 2013
vor 8 Jahren

Du musst die Datei auch laden 😉

1.696 Beiträge seit 2006
vor 8 Jahren

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

B
BIT_0_1 Themenstarter:in
65 Beiträge seit 2016
vor 8 Jahren

Danke für den ==false Hinweis! /blush.

hmm ich checks leider nicht. Wie laden? ich mach doch


ExcelApp.Workbooks.Open(curFile);

T
314 Beiträge seit 2013
vor 8 Jahren

Oh, mein Fehler 😃. Du musst dem ExcelWorkbook auch dein geöffnetes Sheet zuweisen, ansonsten ist dies (vmtl.) null.

B
BIT_0_1 Themenstarter:in
65 Beiträge seit 2016
vor 8 Jahren

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!

T
314 Beiträge seit 2013
vor 8 Jahren

Dein Aufruf

 ExcelApp.Workbooks.Open(curFile);

ändern in


ExcelWorkbook = ExcelApp.Workbooks.Open(curFile);

B
BIT_0_1 Themenstarter:in
65 Beiträge seit 2016
vor 8 Jahren

Vielen Danke t0ms3n 😃