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 文件中加载数据。()函数,用于授予访问特定Excel文件的权限。
在访问WorkBook之后,您可以使用`WorkBook.GetWorkSheet()功能。 现在您已经可以访问所有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
单元格包含 小型企业
。 从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 数据集和数据表,为该过程提供了更多代码示例和解释。
现在,我们将看到另一个方面,即在我们的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文件中从A3
到C3
单元格的第3行数据为New Value
。
了解更多关于使用的信息C# 中的范围函数请举例说明。
替换单元格值
IronXL的美在于,我们可以轻松地在现有Excel文件中将old values
替换为new values
,并涵盖以下所有方面:
- 替换整个工作表的值:
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
上述代码将把从 B5
到 G5
的 Normal
值替换为 Good
,工作表的其他部分保持不变。 了解更多关于如何编辑 Excel 单元格区域中的值并使用 IronXL 的这一功能。
删除 Excel 文件的行
在应用程序开发中,我们有时需要以编程方式删除现有Excel文件的整行。 为了完成这项任务,我们使用 RemoveRow
方法。()IronXL 的功能。 这里有一个例子:
/**
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
行。