C# Excel Interop Abhilfe
Viele Projekte nutzen Excel, um Klarheit in der Kommunikation zu schaffen, aber wenn Sie Microsoft.Office.Interop.Excel
verwenden, mussten Sie sich wahrscheinlich mit vielen komplizierten Codezeilen auseinandersetzen. 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
-
Installieren Sie eine Excel-Bibliothek, um Excel-Dateien zu verarbeiten.
-
Öffnen Sie das
Workbook
und fügen Sie die aktuelle Excel-Datei hinzu. -
Legen Sie das Standard-Arbeitsblatt fest.
-
Lesen Sie den Wert aus der Excel-Arbeitsmappe.
- Verarbeiten und zeigen Sie den Wert.
Schritt 1
1. IronXL-Bibliothek herunterladen
IronXL-Bibliothek herunterladen oder mit NuGet installieren, um auf die kostenlose Bibliothek zuzugreifen und dann Schritt für Schritt dieses Tutorial zum Verwenden von Excel ohne Interop durchzuarbeiten. Lizenzen sind verfügbar, wenn Sie Ihr Projekt live schalten 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. Mit IronXL verwenden Sie die WorkBook.Load()
-Funktion, die den Zugriff zum Lesen einer bestimmten Excel-Datei gewährt.
Nach dem Zugriff auf das WorkBook können Sie dann mit der Funktion WorkBook.GetWorkSheet()
ein spezifisches WorkSheet auswählen. 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
Dieser Code führt zu folgendem Ergebnis:
Die Excel-Datei sieht wie folgt aus:
Wir können sehen, dass unsere Excel-Datei, sample.xlsx
, in der Zelle A5
kleines Unternehmen
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)
Sie können mehr darüber lesen, wie Sie mit Excel DataSet und DataTables arbeiten, wo Sie weitere Codebeispiele und Erklärungen zum Prozess finden.
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()
, die eine neue Excel-Datei erstellt.
Wir können dann so viele Arbeitsblätter wie nötig mit der Funktion WorkBook.CreateWorkSheet()
erstellen.
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
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
und 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.
Erfahren Sie mehr darüber, wie Sie neue Excel-Tabellen mit C# erstellen 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
Der obige Code wird den Wert der Zelle A3
mit New Value of A3
aktualisieren.
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"
Dies wird die Zeilennummer 3 von A3
bis C3
-Zellen mit dem neuen Wert
der Excel-Datei aktualisieren.
Erfahren Sie mehr über die Verwendung der Range-Funktion in C# mit diesen Beispielen.
Ersetzen von Zellwerten
Es ist die Schönheit von IronXL, dass wir die alten Werte
in einer bestehenden Excel-Datei einfach durch neue Werte
ersetzen können, und es deckt alle folgenden Aspekte ab:
- 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")
- 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")
- 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")
- 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")
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
Der obige Code ersetzt den Wert Normal
mit Good
von B5
bis G5
, und der Rest des Arbeitsblattes bleibt unverändert. Erfahren Sie mehr darüber, wie Sie Excel-Zellwerte in einem Bereich bearbeiten und diese Funktion von IronXL verwenden.
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 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
Der obige Code wird Zeile Nummer 2
aus sample.xlsx
entfernen.
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