Codefieber.de

IT-Blog

Zugriff auf Excel mit C#

| Keine Kommentare

Zugriff auf Excel mit C# – Eine kleine Anleitung wie man mit C# auf eine Excel-Mappe zugreift und die einzelnen Tabellen & Spalten ausliest.

Der Zugriff auf Excel-Dateien und -Funktionen mit C# ist eigentlich recht einfach. Zunächst muss ein Verweis auf die COM-Bibliothek Microsoft Excel 11.0 Object Library hinzugefügt und dann noch der entsprechende Namespace inkludiert werden mittels:

using Excel = Microsoft.Office.Interop.Excel;

Ab Excel 2007: Es muss die COM-Bibliothek Microsoft Excel 12.0 Object Library verwendet werden.
Ab Excel 2010: Es muss die COM-Bibliothek Microsoft Excel 14.0 Object Library verwendet werden.

Wie wir im folgenden Code sehen, können wir durch die Interop.Excell.dll relativ schnell Zugriff auf die Tabelle erhalten. Der Zugriff auf die Tabelle erfolgt mittels

excelApp.Workbooks.Open()

Es ist von Vorteil, zuvor das vorhandensein der Excel-Tabelle mittels

if (File.Exists(excelFilePath))

zu prüfen.

Mit der Zeile

excelWorkSheet = (ExcelRefer.Worksheet)excelWorkBook.Worksheets.get_Item(1);

erhalten wir Zugriff auf das erste Excel-Tabellenblatt. Sofern man mehrere Tabellenblätter durchgehen möchte, kann man den Befehl auch in einer for-Schleife ausführen lassen. Dann ermitteln wir die Größe / Range der Tabelle und gehen die Zeilen mittels for-Schleife durch. Um eine Zelle in einer bestimmten Spalte auszulesen, nutzen wir einfach

string title = (string)(range.Cells[i, 1] as ExcelRefer.Range).Value2;

 

Der komplette Code sieht wie folgt aus:

class Excel
{
    ExcelRefer.Range range;
    ExcelRefer.Application excelApp;
    ExcelRefer.Workbook excelWorkBook;
    ExcelRefer.Worksheet excelWorkSheet;

    public void InitExcelConnection(string pExcelFilePath)
    {
        string excelFilePath = pExcelFilePath;
        try
        {
            excelApp = new ExcelRefer.Application();
            excelWorkBook = excelApp.Workbooks.Open(excelFilePath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            excelWorkSheet = (ExcelRefer.Worksheet)excelWorkBook.Worksheets.get_Item(1); // Zugriff auf erstes Tabellenblatt
            range = excelWorkSheet.UsedRange;
        }
        catch (Exception)
        {
        }
    }

    public void ParseExcelData()
    {           
        // Gehe das ganze Zabellenblatt durch
        for (int i = 1; i <= range.Rows.Count; i++)
        {
            // Zugriff auf jede Zeile
            if ((range.Cells[i, 1] as ExcelRefer.Range).Value2 != null)
            {
                try
                {
                    string title         = (string)(range.Cells[i, 1] as ExcelRefer.Range).Value2;
                    string description     = (string)(range.Cells[i, 2] as ExcelRefer.Range).Value2;

                }
                catch (Exception)
                {
                }
            }
        }
        excelWorkBook.Close(true, null, null);
        excelApp.Quit();
    }	
}
avatar

Autor: Pascal

Codefieber.de wird von Pascal Betke geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.