C# Excel Interop Abhilfe
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
Installieren Sie eine Excel-Bibliothek, um Excel-Dateien zu verarbeiten.
Öffnen Sie die "Arbeitsmappe" 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 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
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)
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
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
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"
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")
- 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" 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
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