Excel Zellen schreiben (Problem)

markuscjb

Grünschnabel
Hallo zusammen,

ich bin gerade dran was zu schreiben um mit C# was in Excel zu schreiben. Gut der Zugriff funktioniert. Ich kann Daten herauslesen, nur das hineinschreiben nicht. Keine Ahnung warum. Vielleicht habt ihr ne Idee. Kopier mal mein Code hier rein.
Habe den Code von: Stefan Macke als Vorlage genommen.

Ich versuche mit ws.Cells[2, 2] = "irgendein Text"; was in eine Zelle hineinzuschreiben.

PHP:
            Microsoft.Office.Interop.Excel.Application excel = null;

            Workbook wb = null;

            try
            {

                // Excel starten

                excel = new Microsoft.Office.Interop.Excel.ApplicationClass();

                excel.Visible = false;



                // Datei öffnen

                wb = excel.Workbooks.Open(
                    db_excel_pfad,

                    ExcelKonstanten.UpdateLinks.DontUpdate,

                    ExcelKonstanten.ReadWrite,

                    ExcelKonstanten.Format.Nothing,

                    "", // Passwort

                    "", // WriteResPasswort

                    ExcelKonstanten.IgnoreReadOnlyRecommended,

                    XlPlatform.xlWindows,

                    "", // Trennzeichen
                    ExcelKonstanten.Editable,

                    ExcelKonstanten.DontNotifiy,

                    ExcelKonstanten.Converter.Default,

                    ExcelKonstanten.DontAddToMru,

                    ExcelKonstanten.Local,

                    ExcelKonstanten.CorruptLoad.NormalLoad);

                //Alle Meldungen z.B. Speichern ausschalten
                //   wb.Application.DisplayAlerts = false;


                // Arbeitsblätter lesen
                Sheets sheets = wb.Worksheets;

                // ein Arbeitsblatt auswählen...

                Worksheet ws = (Worksheet)sheets.get_Item("Tabelle1");

                // ...oder eine Zelle

                Range range = (Range)ws.get_Range("A1", "A1");

                // deren Wert auslesen

                string zellwert = range.Value2.ToString();

                //Was hineinschreiben

                ws.Cells[2, 2] = "irgendein Text";
                MessageBox.Show(zellwert);

                // Range und Worksheet Objekte freigeben              
                range = null;
                ws = null;


            }

            finally
            {

                // Falls noch offen, Excel Datei schliessen und

                // Workbook Objekt freigeben
                wb.Save();

                if (wb != null)

                    wb.Close(false, null, null);

                wb = null;

                // Falls noch offen, Anwendung schliessen und

                // Application Objekt freigeben

                if (excel != null)

                excel.Quit();
                excel = null;

            }

        }
 
Zuletzt bearbeitet:
Hi,

also geht nicht äußert sich nicht mit keiner Fehlermeldung. Also auch vom Debugger her bekomm ich keinen Fehler. Kurz und gut er wirft gar keine Fehlermeldung.

Nun ich lasse bsp in Zelle B2 was reinschreiben( ws.Cells[2, 2] = "irgendein Text"; )
Wenn ich danach die Excel Datei öffne und hineinschau steht nichts drinne. Das ist das Problem.

Aber dein Tipp mit gleich nach dem reinschreiben wieder Abfragen war schon mal gut. Nachdem ich reingeschrieben habe, habe ich die Zelle wieder abgefragt. Anscheinend schreibt er, speichert aber nicht.
Weiß nicht, kannst du damit was anfangen? Wenn ich DisplyAlerts auf true setze, kommt zum schluss eine Abfrage ob ich die Datei speichern möchte. Wenn ich mit ja bestätige, fragt er nochmal, und zwar diesmal ob ich die Datei ersetzen möchte. Ich bestätige mit ja. Wenn ich dann die Excel Datei öffne sind die Daten was vorher schon drin waren da, aber das was ich mit dem c# Programm schreiben lassen habe ist nicht da.

Also irgendwas muss beim speichern falsch laufen bzw. ich mache was falsch. Ich möchte das er einfach nach dem reinschreiben speichert. Ohne die Datei zu ersetzen.

Danke schon mal für deine Hilfe.
 
Hi,

ich habe jetzt die Datei mittels

wb.SaveCopyAs(@"C:\test.xlsx");

sprich eine Kopie von der Datei an einem anderen Ort abgespeichert. Wenn ich jezt hineinschaue passt es! Ja gut ich könnte jetzt die Datei an dem gleichen Ort unter dem selben Namen abspeichern. Die Datei würde dann parktisch im Hintergrund immer ersetzt.

Dies wäre zwar eine Lösung die nicht sehr elegant ist, aber mit der man leben könnte.
Was ich nur nicht versteh, wo das Problem beim normalen speichern liegt?
 
Zurück