C# Excel Interop Abhilfe

This article was translated from English: Does it need improvement?
Translated
View the article in English

Viele Projekte verwenden Excel, um klar zu kommunizieren, aber wenn Sie Microsoft.Office.Interop.Excel verwenden, dann sind Sie wahrscheinlich mit vielen komplizierten Codezeilen konfrontiert worden. In diesem Tutorial werden wir IronXL als C# Excel Interop Workaround verwenden, so dass Sie Interop nicht verwenden müssen, um Ihr Projekt zu beenden. Sie können Daten aus Excel-Dateien verwenden, Excel-Dateien erstellen, bearbeiten und manipulieren, alles mit C#-Programmierung.


Wie man Excel Interop alternativ verwendet

  1. Installieren Sie eine Excel-Bibliothek, um Excel-Dateien zu verarbeiten.
  2. Öffnen Sie die "Arbeitsmappe" und fügen Sie die aktuelle Excel-Datei hinzu.
  3. Legen Sie das Standard-Arbeitsblatt fest.
  4. Lesen Sie den Wert aus der Excel-Arbeitsmappe.
  5. Verarbeiten und zeigen Sie den Wert.

    Schritt 1

1. IronXL-Bibliothek herunterladen

IronXL-Bibliothek herunterladen odermit NuGet installieren um auf die kostenlose Bibliothek zuzugreifen, und folgen Sie dann Schritt für Schritt den Anweisungen in diesem Tutorial zur Verwendung von Excel ohne Interop. Lizenzen sind verfügbar, wenn Sie Ihr Projekt in Betrieb nehmen möchten.

Install-Package IronXL.Excel


Anleitung zum Tutorial

2. Zugriff auf Excel-Datei-Daten

Für die Entwicklung von Geschäftsanwendungen benötigen wir einen einfachen und perfekten Zugang zu Daten aus Excel-Dateien und die Möglichkeit, diese programmatisch entsprechend einer Vielzahl von Anforderungen zu manipulieren. Verwenden Sie bei IronXL die Funktion `WorkBook.Load()funktion, die den Zugriff auf das Lesen einer bestimmten Excel-Datei ermöglicht.

Nachdem Sie auf das WorkBook zugegriffen haben, können Sie ein bestimmtes Arbeitsblatt auswählen, indem Sie die Funktion `WorkBook.GetWorkSheet()funktion. Jetzt haben Sie alle Daten der Excel-Datei zur Verfügung. Im folgenden Beispiel sehen Sie, wie wir diese Funktionen verwendet haben, um Daten aus einer Excel-Datei in einem C#-Projekt abzurufen.

/**
Access File Data
anchor-access-excel-file-data
**/
using IronXL;
static void Main(string [] args)
{
    //Access Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //Access WorkSheet of Excel file
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //get specific cell value
    string a = ws ["A5"].Value.ToString();
    Console.WriteLine(" Getting Single Value:\n\n   Value of Cell A5: {0} ",a);
    Console.WriteLine("\n Getting Many Cells Value using Loop:\n");
    //get many cell values using range function
    foreach (var cell in ws ["B2:B10"])
    {
        Console.WriteLine("   Value is: {0}", cell.Text);
    }
    Console.ReadKey();
}
/**
Access File Data
anchor-access-excel-file-data
**/
using IronXL;
static void Main(string [] args)
{
    //Access Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //Access WorkSheet of Excel file
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //get specific cell value
    string a = ws ["A5"].Value.ToString();
    Console.WriteLine(" Getting Single Value:\n\n   Value of Cell A5: {0} ",a);
    Console.WriteLine("\n Getting Many Cells Value using Loop:\n");
    //get many cell values using range function
    foreach (var cell in ws ["B2:B10"])
    {
        Console.WriteLine("   Value is: {0}", cell.Text);
    }
    Console.ReadKey();
}
'''
'''Access File Data
'''anchor-access-excel-file-data
'''*
Imports Microsoft.VisualBasic
Imports IronXL
Shared Sub Main(ByVal args() As String)
	'Access Excel file
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	'Access WorkSheet of Excel file
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'get specific cell value
	Dim a As String = ws ("A5").Value.ToString()
	Console.WriteLine(" Getting Single Value:" & vbLf & vbLf & "   Value of Cell A5: {0} ",a)
	Console.WriteLine(vbLf & " Getting Many Cells Value using Loop:" & vbLf)
	'get many cell values using range function
	For Each cell In ws ("B2:B10")
		Console.WriteLine("   Value is: {0}", cell.Text)
	Next cell
	Console.ReadKey()
End Sub
VB   C#

Dieser Code führt zu folgendem Ergebnis:

Die Excel-Datei sieht wie folgt aus:

Wir sehen, dass unsere Excel-Datei "sample.xlsx" in der Zelle "A5" den Eintrag "small business" enthält. Die anderen Werte von B2 bis B10 sind gleich und werden in der Ausgabe angezeigt.

DataSet und DataTables

Wir können auch mit Excel-Dateien als Datensatz und Datentabellen arbeiten, indem wir diese Anweisungen verwenden.

/**
DataSet and DataTables
anchor-dataset-and-datatables
**/
//Access WorkBook.          
WorkBook wb = WorkBook.Load("sample.xlsx");
//Access WorkSheet.
 WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Behave with a workbook as Dataset.
DataSet ds = wb.ToDataSet(); 
//Behave with workbook as DataTable
DataTable dt = ws.ToDataTable(true);
/**
DataSet and DataTables
anchor-dataset-and-datatables
**/
//Access WorkBook.          
WorkBook wb = WorkBook.Load("sample.xlsx");
//Access WorkSheet.
 WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Behave with a workbook as Dataset.
DataSet ds = wb.ToDataSet(); 
//Behave with workbook as DataTable
DataTable dt = ws.ToDataTable(true);
'''
'''DataSet and DataTables
'''anchor-dataset-and-datatables
'''*
'Access WorkBook.          
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
'Access WorkSheet.
 Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'Behave with a workbook as Dataset.
Dim ds As DataSet = wb.ToDataSet()
'Behave with workbook as DataTable
Dim dt As DataTable = ws.ToDataTable(True)
VB   C#

Lesen Sie mehr über die Arbeit mitExcel DataSet und DataTablesdie weitere Code-Beispiele und Erklärungen zu diesem Verfahren enthält.

Jetzt werden wir einen anderen Aspekt sehen, nämlich die Erstellung einer neuen Excel-Datei in unserem C#-Projekt.


3. Neue Excel-Datei erstellen

Wir können ganz einfach ein neues Excel SpreadSheet erstellen und Daten programmatisch in unser CSharp-Projekt einfügen. Um dies zu erreichen, bietet IronXL die Funktion ` WorkBook.Create()funktion, die eine neue Excel-Datei erstellt.

Wir können dann so viele Arbeitsblätter wie nötig erstellen, indem wir die Funktion `WorkBook.CreateWorkSheet()funktion.

Danach können wir auch Daten einfügen, wie im folgenden Beispiel gezeigt:

/**
Create New Excel 
anchor-create-new-excel-file
**/
using IronXL;
static void Main(string [] args)
{
    //create new WorkBook
    WorkBook wb = WorkBook.Create();
    //Create new WorkSheet in wb
    WorkSheet ws = wb.CreateWorkSheet("sheet1");
    //Insert Data 
    ws ["A1"].Value = "New Value A1";
    ws ["B2"].Value = "New Value B2";
    //Save newly created Excel file
    wb.SaveAs("NewExcelFile.xlsx");
}
/**
Create New Excel 
anchor-create-new-excel-file
**/
using IronXL;
static void Main(string [] args)
{
    //create new WorkBook
    WorkBook wb = WorkBook.Create();
    //Create new WorkSheet in wb
    WorkSheet ws = wb.CreateWorkSheet("sheet1");
    //Insert Data 
    ws ["A1"].Value = "New Value A1";
    ws ["B2"].Value = "New Value B2";
    //Save newly created Excel file
    wb.SaveAs("NewExcelFile.xlsx");
}
'''
'''Create New Excel 
'''anchor-create-new-excel-file
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	'create new WorkBook
	Dim wb As WorkBook = WorkBook.Create()
	'Create new WorkSheet in wb
	Dim ws As WorkSheet = wb.CreateWorkSheet("sheet1")
	'Insert Data 
	ws ("A1").Value = "New Value A1"
	ws ("B2").Value = "New Value B2"
	'Save newly created Excel file
	wb.SaveAs("NewExcelFile.xlsx")
End Sub
VB   C#

Der obige Code erstellt eine neue Excel-Datei mit dem Namen NewExcelFile.xlsx und fügt neue Daten in die Zelladressen A1 und B1 mit den Werten New Value A1 bzw. New Value B2 ein. Auf diese Weise können Sie so viele Daten wie nötig auf die gleiche Weise einfügen. Hinweis: Wenn Sie eine neue Excel-Datei erstellen oder eine bestehende Datei ändern, vergessen Sie nicht, die Datei wie im obigen Beispiel zu speichern. Vertiefen Sie, wie manErstellen neuer Excel-Tabellenblätter mit C# und probieren Sie den Code in Ihrem Projekt aus.


4. Vorhandene Excel-Datei modifizieren

Wir können bestehende Excel-Dateien ändern und aktualisierte Daten programmatisch einfügen. Bei Änderungen an Excel-Dateien sind folgende Aspekte zu beachten:

  • Aktualisieren Sie den Zellwert
  • Ersetzen Sie alte Werte durch neue
  • Entfernen Sie die Zeile oder Spalte

    Schauen wir uns an, wie wir die oben genannten Themen in unserem CSharp-Projekt umsetzen.

Zellenwert aktualisieren

Es ist sehr einfach, den Wert einer Zelle in einem bestehenden Excel-Arbeitsblatt zu aktualisieren. Greifen Sie einfach auf die Excel-Datei im Projekt zu, geben Sie das Arbeitsblatt an und aktualisieren Sie die Daten wie im folgenden Beispiel gezeigt:

/**
Update Cell Value
anchor-update-cell-value
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //update A3 value
    ws ["A3"].Value = "New Value of A3";
    wb.SaveAs("sample.xlsx");
}
/**
Update Cell Value
anchor-update-cell-value
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //update A3 value
    ws ["A3"].Value = "New Value of A3";
    wb.SaveAs("sample.xlsx");
}
'''
'''Update Cell Value
'''anchor-update-cell-value
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'update A3 value
	ws ("A3").Value = "New Value of A3"
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

Der obige Code aktualisiert den Wert der Zelle "A3" mit "Neuer Wert von A3".

Wir können auch mehrere Zellen mit einem statischen Wert aktualisieren, indem wir die Bereichsfunktion verwenden:

 ws ["A3:C3"].Value = "New Value";
 ws ["A3:C3"].Value = "New Value";
ws ("A3:C3").Value = "New Value"
VB   C#

Dadurch wird Zeile Nummer 3 von den Zellen "A3" bis "C3" mit dem "neuen Wert" der Excel-Datei aktualisiert.

Erfahren Sie mehr über die Verwendung desBereichsfunktion in C# mit diesen Beispielen.

Ersetzen von Zellwerten

Das Schöne an IronXL ist, dass wir die "alten Werte" in einer bestehenden Excel-Datei leicht durch "neue Werte" ersetzen können und dass es alle folgenden Aspekte abdeckt:

  • Ersetzen Sie die Werte eines kompletten WorkSheets:
 WorkSheet.Replace("old value", "new value");
 WorkSheet.Replace("old value", "new value");
WorkSheet.Replace("old value", "new value")
VB   C#
  • Ersetzen Sie die Werte einer bestimmten Zeile:
WorkSheet.Rows [RowIndex].Replace("old value", "new value");
WorkSheet.Rows [RowIndex].Replace("old value", "new value");
WorkSheet.Rows (RowIndex).Replace("old value", "new value")
VB   C#
  • Ersetzen von Werten einer bestimmten Spalte:
WorkSheet.Columns [ColumnIndex].Replace("old value", "new Value")
WorkSheet.Columns [ColumnIndex].Replace("old value", "new Value")
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet.Columns [ColumnIndex].Replace("old value", "new Value")
VB   C#
  • Ersetzen von Werten in einem bestimmten Bereich:
WorkSheet ["From:To"].Replace("old value", "new value");
WorkSheet ["From:To"].Replace("old value", "new value");
WorkSheet ("From:To").Replace("old value", "new value")
VB   C#

Sehen wir uns ein Beispiel an, um deutlich zu sehen, wie die oben genannten Funktionen in unserem CSharp-Projekt verwendet werden können, um die Werte zu ersetzen. Hierfür verwenden wir die Funktion replace, um einen Wert in einem bestimmten Bereich zu ersetzen.

/**
Replace Cell Value Range
anchor-replace-cell-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Specifying Range from B5 to G5
    ws ["B5:G5"].Replace("Normal", "Good");
    wb.SaveAs("sample.xlsx");
}
/**
Replace Cell Value Range
anchor-replace-cell-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Specifying Range from B5 to G5
    ws ["B5:G5"].Replace("Normal", "Good");
    wb.SaveAs("sample.xlsx");
}
'''
'''Replace Cell Value Range
'''anchor-replace-cell-values
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'Specifying Range from B5 to G5
	ws ("B5:G5").Replace("Normal", "Good")
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

Der obige Code ersetzt den Wert "Normal" durch "Gut" von "B5" bis "G5", und der Rest des Arbeitsblatts bleibt unverändert. Mehr darüber, wie manExcel-Zellenwerte in einem Bereich bearbeiten und die Nutzung dieser Funktion von IronXL.

Zeilen einer Excel-Datei entfernen

Bei der Anwendungsentwicklung müssen wir manchmal ganze Zeilen aus bestehenden Excel-Dateien programmatisch entfernen. Für diese Aufgabe verwenden wir die Funktion `RemoveRow()funktion von IronXL. Hier ist ein Beispiel:

/**
Remove Row
anchor-remove-rows-of-excel-file
**/
using IronXL;
static void Main(string [] args)
{ 
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Remove the row number 2
    ws.Rows [2].RemoveRow();
    wb.SaveAs("sample.xlsx");
}
/**
Remove Row
anchor-remove-rows-of-excel-file
**/
using IronXL;
static void Main(string [] args)
{ 
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Remove the row number 2
    ws.Rows [2].RemoveRow();
    wb.SaveAs("sample.xlsx");
}
'''
'''Remove Row
'''anchor-remove-rows-of-excel-file
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'Remove the row number 2
	ws.Rows (2).RemoveRow()
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

Mit dem obigen Code wird die Zeile Nummer "2" aus "sample.xlsx" entfernt.


Tutorial Schnellzugriff

IronXL-Referenz

Lesen Sie die API-Referenz für IronXL, um mehr über alle Funktionen, Merkmale, Klassen und Namespaces zu erfahren.

IronXL-Referenz