C# / Excel Interop: Zellen Updaten

WiZdooM

Erfahrenes Mitglied
Hallo

ich lese mittels c# ein logfile aus und lasse daraus für die letzten 64 Tage 4 Werte extrahieren.

Bisher ist mein Ansatz SQL-Update orientiert, bei dem ich dank Office.Interop.Excel durch jedes Datum (primärschlüssel) gehe und die Werte der Spalten A-D update. Leider funktioniert das nicht, denn unglücklicherweise ist die Spaltenbezeichnung nicht in der 1. Zeile des Sheets, sondern in der 4. (In Zeile 1 und 2 stehen Informationen zur Liste). Das Resultat ist nun der Fehler 80040e10 - No value given for one or more required parameters (offensichtlich - weil OleDB davon ausgeht, dass meine Spaltenbezeichner in Zeile 1 stehen)

Ist es möglich der Interop mitzuteilen, in welcher Zeile sich die Spaltenbezeichner befinden? Ich habe die Befürchtung, dass das nicht gehen wird.

Angenommen ich wurde mir die Daten erst in ein DataSet o.Ä. überführen, könnte ich dann die gesamte Cell-Range(A5-D68) einfach überschreiben ohne dass ich über das SQL-Update gehen muss? Oder wäre es geschickter, ein neues Sheet zu erzeugen, die Werte stur von A5-D68 eintragen, die Range mit C&P in die Zielsheet bringen und das tempsheet wieder löschen?

Edit:

Wiedermal habe ich mir selbst die "Lösung" genannt. Ich habe es nun so gelöst:

Code:
Object n = System.Reflection.Missing.Value;
            try
            {
                Excel.Application excel = new Excel.Application();
                Excel.Workbook workbook = excel.Workbooks.Open(table, n, n, n, n, n, n, n, n, n, n, n, n, n, n);
                Excel.Worksheet worksheet = workbook.Worksheets[1];

                int maxRow = 68;
                int maxColumn = 4;

                worksheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperA4;

                for (int row = 5; row <= maxRow; row++)
                {
                    var values = daysLog[row - 5].ToString().Split(';');
                    for (int column = 1; column <= maxColumn; column++)
                    {
                        worksheet.Cells[row, column] = values[column - 1];
                    }
                }
                workbook.Save();
                excel.Quit();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Fehler!");
            }
 
Zuletzt bearbeitet: