C# Excel 互操作变通方法
许多项目使用 Excel 来清晰地交流,但如果您使用 Microsoft.Office.Interop.Excel
,您可能不得不面对许多复杂的代码行。在本教程中,我们将使用 IronXL 作为 C# Excel 互操作变通方法,这样您就不必使用 Interop 即可完成项目。您可以使用 Excel 文件数据,创建、编辑和操作 Excel 文件,全部使用 C# 编程。
如何交替使用 Excel 互操作
1.安装 Excel 库以处理 Excel 文件。
2.打开 "工作簿 "并添加当前 Excel 文件。
3.设置默认工作表。
4.从 Excel 工作簿中读取值。
5.处理并显示数值。
步骤 1
1.下载 IronXL 库
下载 IronXL 资料库 或 使用 NuGet 安装 访问免费库,然后一步一步地学习本教程,了解如何在不使用 Interop 的情况下使用 Excel。如果您想启动自己的项目,可获得许可证。
Install-Package IronXL.Excel
教程
2.访问 Excel 文件数据
要开发业务应用程序,我们需要轻松、完美地访问 Excel 文件中的数据,并能根据各种要求对其进行编程操作。在 IronXL 中,使用 `WorkBook.Load()函数,该函数授予读取特定 Excel 文件的权限。
访问工作簿后,可以使用`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
单元格中有 small business
。从 B2
到 B10
的其他值都是一样的,并显示在输出中。
DataSet 和 DataTables
我们还可以使用这些方法将 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
上述代码将创建一个新的 Excel 文件,文件名为 NewExcelFile.xlsx
,并在单元格地址 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
上面的代码将用 "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
单元格。
了解更多有关使用 C# 中的范围函数 请举例说明。
替换单元格值
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
上述代码将用 "Good "替换 "B5 "到 "G5 "中的 "Normal "值,而工作表的其他部分保持不变。查看更多有关如何 编辑 Excel 单元格区域中的值 并使用 IronXL 的这一功能。
删除 Excel 文件中的行
在应用程序开发中,我们有时需要以编程方式删除现有 Excel 文件中的整行。为此,我们使用 `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
行。