[C#] Excel bearbeiten

Drucken
( 7 Votes )
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 27.12.2011 Zuletzt aktualisiert am 16.08.2012 Geschrieben von Jonny132
Um mit den Office - Produkten zu Arbeiten gibt es Schnittstellen (dlls). Diese Schnittstellen sind verfügbar sobald Office Installiert ist.
Damit wir dies Funktionalität verwenden können, müssen wir sie referenzieren. Danach steht uns der volle Funktionsumfang von Office zur Verfügung. Ich zeige euch nun wie man Excel - Dateien erstellen und manipulieren kann.
Erstellt dazu ein neues Projekt und Referenziert die Microsoft.Office.Interop.Excel dll.
Excel Referenzieren

Achtung: Achtet darauf, dass die Eigenschaft "Embed Interop Type" der referenzierten DLL auf den Wert 'False' gestellt ist.

Nun wechseln wir in die Codeansicht. Zur Vereinfachung und zur besseren lesbarkeit des Codes verwenden wir 2 Using - Anweisungen:

Using Anweisungen 

using Microsoft.Office.Interop.Excel;
using System.Diagnostics;
using System.Runtime.InteropServices;

Form Load Ereignis

private void Form1_Load(object sender, EventArgs e)
 {
   string path = @"C:\temp\test.xls";
   ApplicationClass excelApllication = null;
   Workbook excelWorkBook = null;
   Worksheet excelWorkSheet = null;
 
   excelApllication = new ApplicationClass();
   System.Threading.Thread.Sleep(2000); 
   excelWorkBook = excelApllication.Workbooks.Add();
   excelWorkSheet = (Worksheet)excelWorkBook.Worksheets.get_Item(1);
 
   excelWorkSheet.Cells[1, 1] = "Spalte A, Zeile 1";
   excelWorkSheet.Cells[2, 5] = "Spalte E, Zeile 2";
   excelWorkSheet.Cells[3, 3] = "Spalte C, Zeile 3";
 
   excelWorkBook.SaveAs(path, XlFileFormat.xlWorkbookNormal);
 
   excelWorkBook.Close();
   excelApllication.Quit();
 
   Marshal.FinalReleaseComObject(excelWorkSheet);
   Marshal.FinalReleaseComObject(excelWorkBook);
   Marshal.FinalReleaseComObject(excelApllication);
   excelApllication = null;
   excelWorkSheet = null;
   Process.Start(path);
  }


Zuerst initialisieren wir eine Path - Variable in der wir den Pfad zur späteren xls - Datei angeben.
Zudem erstellen wir eine ExcelApplication. Danach müssen wir etwas warten (Sleep), damit Excel alle Verweise und eventuelle AddOns laden kann, damit es nicht zu einem Fehler führt. Um in dieser ExcelApplication Zellen manipulieren zu können muss man wissen, dass eine Exceldatei immer aus mehreren sogenannten Workbooks, die wiederrum mehrere Worksheets enthalten können, besteht.

Um also Zellen bearbeiten zu können, müssen wir zumindes ein Workbook erstellen die ein Worksheet enthält. Dieser Worksheet können wir nun einfach auf die Cells - Auflistung zugreiffen (Hinweis: Diese Indexe sind nicht wie in C# üblich 0-basierend sondern 1-basierend.)
Nachdem wir die Zellen bearbeitet und modifiziert haben, speichern wir das WorkBook unter angegebenem Pfad ab und geben gebrauchte Ressourcen frei.Am Ende der aufräumarbeiten wird dem GarbageCollector noch mitgeteilt dass er 'aufräumen' soll. Dies ist nötig da ansonsten der Excel - Prozess bestehen bleibt.
Zu allerletzte öffnen wir die Datei noch um das Ergebnis zu betrachten:
Excel Modifiziert
 

 

 

 

 

  • Poddy

    schrieb am 2013-05-21 22:16:34

    Schöner Beitrag,
    könnten Sie eventuell auch Fälle darlegen, wie man Methoden ausführt, wenn die Exceltabelle vom Benutzer geschlossen wird?

    lg

    Auf Kommentar antworten

    • Jonny132

      schrieb am 2013-05-22 09:48:28

      Hallo Poddy,

      ich verstehe nicht so recht Ihr Anliegen.
      Excel wird ja erst mit Process.Start() zu Schluss gestartet.
      Zuvor bekommt der Benutzer garkeine Gelegenheit die "Exceltabelle" zu schliessen.

      sg

      Auf Kommentar antworten

  • Buk

    schrieb am 2013-04-17 10:52:44

    Gutes Tutorial, nur eine Frage;
    Wie kann ich diese erstellte excel datei bearbeiten, also keine neue exeldatei erstellen sondern auf eine schon vorhandene zugreifen?
    Vielen Dank schon im vorraus!

    Auf Kommentar antworten

    • Jonny132

      schrieb am 2013-04-17 14:43:35

      Hallo Buk,

      es gibt die Open()-Methode der du ein Pfad mitgeben kannst.

      excelApplication.Workbooks.Open(pfadZurDatei);

      Falls du weitere Fragen hast, bitte melde dich im Forum.

      Auf Kommentar antworten

Veröffentlichen Sie ihre Kommentare ...