C# Excel 互操作解决方案
许多项目使用 Excel 来清晰地交流,但如果您使用 Microsoft.Office.Interop.Excel
,那么您可能已经面临过许多复杂的代码行。 在本教程中,我们将使用IronXL作为C# Excel Interop的替代方案,这样您就无需使用Interop即可完成您的项目。 您可以使用C#编程来使用Excel文件数据、创建Excel文件以及编辑和操作这些文件。
如何交替使用 Excel 互操作
-
安装一个Excel库来处理Excel文件。
-
打开
Workbook
并添加当前的Excel文件。 -
设置默认工作表。
-
从Excel工作簿中读取值。
- 处理并显示数值。
步骤 1
1. 下载 IronXL 库
下载 IronXL 库 或 通过 NuGet 安装来获取免费库,然后按照步骤逐步完成本教程,了解如何在没有 Interop 的情况下使用 Excel。如果您希望将项目上线,可以选择购买许可证。
Install-Package IronXL.Excel
教程
2. 访问 Excel 文件数据
为了开发商业应用程序,我们需要轻松且完美地从Excel文件中访问数据,并能够根据各种要求以编程方式操作它们。 使用 IronXL,使用WorkBook.Load()
函数,可以访问读取特定的 Excel 文件。
在访问 WorkBook 之后,您可以使用 WorkBook.GetWorkSheet()
函数选择特定的 WorkSheet。 现在您已经可以访问所有Excel文件数据了。 请参考下面的示例,了解我们如何在C#项目中使用这些函数来获取Excel文件数据。
/**
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
这段代码将产生以下结果:
Excel 文件看起来是这样的
我们可以看到我们的 Excel 文件sample.xlsx
在A5
单元格中有small business
。 B2
到 B10
的其他值相同,并在输出中显示。
数据集和数据表
我们还可以使用这些指南处理Excel文件作为数据集和数据表。
/**
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)
您可以在Excel DataSet 和 DataTables 上阅读更多内容,其中提供了更多的代码示例和过程说明。
现在,我们将看到另一个方面,即在我们的C#项目中创建新的Excel文件。
3. 创建新的 Excel 文件
我们可以在CSharp项目中轻松地以编程方式创建一个新的Excel电子表格并在其中插入数据。 为此,IronXL 提供了WorkBook.Create()
函数,用于创建新的 Excel 文件。
然后,我们可以使用 WorkBook.CreateWorkSheet()
函数根据需要创建任意数量的工作表。
之后,我们还可以如下示例所示插入数据:
/**
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
上面的代码将创建一个名为NewExcelFile.xlsx
的新Excel文件,并将新数据插入到单元格地址A1
和B1
中,分别具有值New Value A1
和New Value B2
。 通过这种设置,您可以根据需要插入同样的数据。
注意:如果您要创建一个新的 Excel 文件或修改现有文件,请不要忘记保存文件,如上例所示。
深入了解如何使用 C# 创建新的 Excel 电子表格,并在您的项目中尝试代码。
4. 修改现有的Excel文件
我们可以以编程方式修改现有的Excel文件,并在其中插入更新的数据。 在修改 Excel 文件时,我们将看到以下几个方面:
- 更新单元格的值
- 用新值替换旧值
-
删除行或列
让我们看看如何在我们的CSharp项目中实现上述主题。
更新单元格值
更新现有Excel电子表格的单元格值非常简单。 只需在项目中访问 Excel 文件并指定其工作表,然后按照下面的示例更新数据:
/**
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
上述代码将用New Value of A3
更新单元格A3
的值。
我们还可以使用 range 函数将多个单元格更新为静态值:
ws ["A3:C3"].Value = "New Value";
ws ["A3:C3"].Value = "New Value";
ws ("A3:C3").Value = "New Value"
这将更新 Excel 文件中第 3 行的单元格,从 A3
到 C3
,替换为 New Value
。
通过这些示例了解有关在 C# 中使用 Range 函数 的更多信息。
替换单元格值
IronXL 的美妙之处在于,我们可以轻松地将现有 Excel 文件中的旧值
替换为新值
,并涵盖以下所有方面:
- 替换整个工作表的值:
WorkSheet.Replace("old value", "new value");
WorkSheet.Replace("old value", "new value");
WorkSheet.Replace("old value", "new value")
- 替换特定行的值:
WorkSheet.Rows [RowIndex].Replace("old value", "new value");
WorkSheet.Rows [RowIndex].Replace("old value", "new value");
WorkSheet.Rows (RowIndex).Replace("old value", "new value")
- 替换特定列的值:
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")
- 替换特定范围内的值:
WorkSheet ["From:To"].Replace("old value", "new value");
WorkSheet ["From:To"].Replace("old value", "new value");
WorkSheet ("From:To").Replace("old value", "new value")
让我们看一个例子,清楚地了解如何在我们的CSharp项目中使用上述功能来替换值。 为此,我们将使用 replace 函数来替换特定范围内的值。
/**
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
上述代码将把Normal
值替换为Good
,范围是从B5
到G5
,工作表的其他部分将保持不变。 了解更多关于如何编辑范围内的Excel单元格值以及使用IronXL的此功能。
删除 Excel 文件的行
在应用程序开发中,我们有时需要以编程方式删除现有Excel文件的整行。 对于此任务,我们使用IronXL的RemoveRow()
函数。 这里有一个例子:
/**
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
上述代码将删除sample.xlsx
的第2
行。