C# Excel 互操作变通方法

This article was translated from English: Does it need improvement?
Translated
View the article in English

许多项目使用 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
VB   C#

这段代码将产生以下结果:

Excel 文件看起来是这样的

我们可以看到,Excel 文件 sample.xlsxA5 单元格中有 small business。从 B2B10 的其他值都是一样的,并显示在输出中。

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)
VB   C#

您可以阅读更多关于如何与 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
VB   C#

上述代码将创建一个新的 Excel 文件,文件名为 NewExcelFile.xlsx,并在单元格地址 A1B1 中插入新数据,其值分别为 New Value A1New 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
VB   C#

上面的代码将用 "A3 的新值 "更新单元格 A3 的值。

我们还可以使用 range 函数用静态值更新多个单元格:

 ws ["A3:C3"].Value = "New Value";
 ws ["A3:C3"].Value = "New Value";
ws ("A3:C3").Value = "New Value"
VB   C#

这将用 Excel 文件的 "新值 "更新第 3 行从 A3C3 单元格。

了解更多有关使用 C# 中的范围函数 请举例说明。

替换单元格值

IronXL 的妙处在于,我们可以轻松地将现有 Excel 文件中的 "旧值 "替换为 "新值",它涵盖了以下所有方面:

  • 替换完整工作表的值:
 WorkSheet.Replace("old value", "new value");
 WorkSheet.Replace("old value", "new value");
WorkSheet.Replace("old value", "new value")
VB   C#
  • 替换特定行的值:
WorkSheet.Rows [RowIndex].Replace("old value", "new value");
WorkSheet.Rows [RowIndex].Replace("old value", "new value");
WorkSheet.Rows (RowIndex).Replace("old value", "new value")
VB   C#
  • 替换特定列的值:
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")
VB   C#
  • 替换特定范围内的值:
WorkSheet ["From:To"].Replace("old value", "new value");
WorkSheet ["From:To"].Replace("old value", "new value");
WorkSheet ("From:To").Replace("old value", "new value")
VB   C#

让我们来看一个示例,清楚地了解如何在 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
VB   C#

上述代码将用 "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
VB   C#

上述代码将删除 sample.xlsx 中的第 2 行。


教程快速访问

IronXL 参考资料

阅读《IronXL 应用程序接口参考》,进一步了解所有功能、特性、类和命名空间。

IronXL 参考资料