编写 Excel .NET 函数

查克尼特·宾
查克尼特·宾
2020年六月17日
更新 2024年十二月10日
分享:
This article was translated from English: Does it need improvement?
Translated
View the article in English

许多C#应用程序项目要求我们以编程方式更新文件并在Excel电子表格中写入新数据。 Excel .NET 功能有时可能会很复杂,但使用 IronXL 库可以使这项任务变得非常简单,并允许以任何格式处理 Excel 电子表格。 无需大量代码,只需访问特定单元格并分配自定义值。

开始使用IronXL

立即在您的项目中开始使用IronXL,并享受免费试用。

第一步:
green arrow pointer


访问 Excel 文件

让我们首先访问我们想要写入数据的Excel文件。 让我们在项目中打开Excel文件,然后使用以下代码打开其特定的工作表。

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-load-file.cs
// Load Excel file in the project
WorkBook workBook = WorkBook.Load("path");
' Load Excel file in the project
Dim workBook As WorkBook = WorkBook.Load("path")
$vbLabelText   $csharpLabel

上述操作将打开指定的 Excel 文件。接下来是工作表。

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-get-sheet.cs
// Open Excel WorkSheet
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
' Open Excel WorkSheet
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")
$vbLabelText   $csharpLabel

Excel工作表将在workSheet中打开,我们可以使用它在Excel文件中写入任何类型的数据。通过链接中的示例,了解有关如何加载Excel文件类型以及以不同方式访问工作表的更多信息。 注意:不要忘记在您的项目中添加IronXL的引用,并通过Using IronXL导入库。


在特定单元格中写入值

我们可以使用多种不同的方法在Excel文件中进行写入,但基本的方法是使用Excel Cell。 为此,可以访问打开的Excel工作表中的任何单元格,并按如下方式在其中写入值:

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-assign-cell.cs
workSheet["Cell Address"].Value="Assign the Value";
workSheet("Cell Address").Value="Assign the Value"
$vbLabelText   $csharpLabel

下面是一个示例,说明如何在 C# 项目中使用上述函数在 Excel 单元格中写入内容。

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-assign-cell-full.cs
using IronXL;

// Load Excel file
WorkBook workBook = WorkBook.Load("sample.xlsx");

// Open WorkSheet of sample.xlsx
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Access A1 cell and write the value
workSheet["A1"].Value = "new value";

// Save changes
workBook.SaveAs("sample.xlsx");
Imports IronXL

' Load Excel file
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")

' Open WorkSheet of sample.xlsx
Private workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Access A1 cell and write the value
Private workSheet("A1").Value = "new value"

' Save changes
workBook.SaveAs("sample.xlsx")
$vbLabelText   $csharpLabel

此代码将在 Excel 文件 sample.xlsx 的工作表 Sheet1A1 单元格中写入 new value。 同样,我们可以在Excel文件的任何单元格地址插入值。 注意:在工作表中写入新值后,不要忘记保存 Excel 文件,如上例所示。

严格指定确切值

在设置 Value 属性时,IronXL 会尝试将其转换为相应的值类型。 有时,这种评估是不受欢迎的,因为用户希望强制将确切的值赋给单元格,而不是转换后的值。 要做到这一点,需要将值赋给一个字符串。 这可以通过在Excel单元格值前加上撇号来完成。 在 IronXL 中,只需使用 StringValue 代替 Value 即可实现相同的效果。

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-assign-stringvalue.cs
// Assign value as string
workSheet["A1"].StringValue = "4402-12";
' Assign value as string
workSheet("A1").StringValue = "4402-12"
$vbLabelText   $csharpLabel

在范围内写入静态值

我们可以按照以下方式在多个单元格中写入新值,这些单元格被称为一个区域:

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-assign-cell-range.cs
workSheet["From Cell Address:To Cell Address"].Value = "New Value";
workSheet("From Cell Address:To Cell Address").Value = "New Value"
$vbLabelText   $csharpLabel

通过这种方式,我们指定从FromTo的单元格范围,其中将写入数据。 之后,所有位于此范围内的单元格将被写入New Value。 要了解更多关于C# Excel Range的信息,请查看此处的示例。

让我们通过下面的例子来看看如何编写一个范围。

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-assign-cell-range-full.cs
using IronXL;

// Load Excel file
WorkBook workBook = WorkBook.Load("sample.xlsx");

// Open WorkSheet of sample.xlsx
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Specify range row wise and write new value
workSheet["B2:B9"].Value = "new value";

// Specify range column wise and write new value
workSheet["C3:C7"].Value = "new value";

// Save changes
workBook.SaveAs("sample.xlsx");
Imports IronXL

' Load Excel file
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")

' Open WorkSheet of sample.xlsx
Private workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Specify range row wise and write new value
Private workSheet("B2:B9").Value = "new value"

' Specify range column wise and write new value
Private workSheet("C3:C7").Value = "new value"

' Save changes
workBook.SaveAs("sample.xlsx")
$vbLabelText   $csharpLabel

此代码将把B2B9(按行范围)的new valueC3C7(按列范围)的new value写入Excel文件sample.xlsx的工作表sheet1。 它为Excel单元格使用了静态值。


在范围内写入动态值

我们还可以像下面这样向范围添加动态值。

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-assign-dynamic-value.cs
using IronXL;

// Load Excel file
WorkBook workBook = WorkBook.Load("sample.xlsx");

// Open WorkSheet of sample.xlsx
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Specify range in which we want to write the values
for (int i = 2; i <= 7; i++)
{
    // Write the Dynamic value in one row
    workSheet["B" + i].Value = "Value" + i;

    // Write the Dynamic value in another row
    workSheet["D" + i].Value = "Value" + i;
}

// Save changes
workBook.SaveAs("sample.xlsx");
Imports IronXL

' Load Excel file
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")

' Open WorkSheet of sample.xlsx
Private workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Specify range in which we want to write the values
For i As Integer = 2 To 7
	' Write the Dynamic value in one row
	workSheet("B" & i).Value = "Value" & i

	' Write the Dynamic value in another row
	workSheet("D" & i).Value = "Value" & i
Next i

' Save changes
workBook.SaveAs("sample.xlsx")
$vbLabelText   $csharpLabel

上述代码将在 Excel 文件 sample.xlsx27 行中的 B 列和 D 列写入动态值。 我们可以在sample.xlsx上看到代码的结果:

1excel related to 在范围内写入动态值

替换 Excel 单元格值

使用IronXL,我们可以使用Replace()函数轻松将新值替换旧值,如下所示:

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-replace.cs
workSheet.Replace("old value", "new value");
workSheet.Replace("old value", "new value")
$vbLabelText   $csharpLabel

上述函数将在完整的 Excel 工作表中写入new value覆盖old value

在特定行中替换单元格值

如果我们想在一个特定的行中写入一个新值,可以按以下方式进行:

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-replace-row.cs
workSheet.Rows[RowIndex].Replace("old value", "new value");
workSheet.Rows(RowIndex).Replace("old value", "new value")
$vbLabelText   $csharpLabel

这将仅在指定的行索引中将新值写入覆盖旧值

在特定列中替换单元格值

同样地,如果我们想在特定列中将old value替换为new value,则可以按以下方式进行:

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-replace-column.cs
workSheet.Columns[ColumnIndex].Replace("old value", "new Value");
workSheet.Columns(ColumnIndex).Replace("old value", "new Value")
$vbLabelText   $csharpLabel

上述代码将在指定的列索引中将old value替换为new value。 工作表的其他部分保持不变。

在特定范围内替换单元格值

IronXL还提供了一种方法,可以仅在特定范围内用new value替换old value

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-replace-range.cs
workSheet["From Cell Address : To Cell Address"].Replace("old value", "new value");
workSheet("From Cell Address : To Cell Address").Replace("old value", "new value")
$vbLabelText   $csharpLabel

这将把新值写在旧值之上,只在位于指定范围内的单元格中。

让我们看一个例子,如何使用以上所有功能在Excel工作表中写入新值以替换旧值。

所有功能示例

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-replace-full.cs
using IronXL;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Write new above old in complete WorkSheet
workSheet.Replace("old", "new");

// Write new above old just in row no 6 of WorkSheet
workSheet.Rows[5].Replace("old", "new");

// Write new above old just in column no 5 of WorkSheet
workSheet.Columns[4].Replace("old", "new");

// Write new above old just from A5 to H5 of WorkSheet
workSheet["A5:H5"].Replace("old", "new");

workBook.SaveAs("sample.xlsx");
Imports IronXL

Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Write new above old in complete WorkSheet
workSheet.Replace("old", "new")

' Write new above old just in row no 6 of WorkSheet
workSheet.Rows(5).Replace("old", "new")

' Write new above old just in column no 5 of WorkSheet
workSheet.Columns(4).Replace("old", "new")

' Write new above old just from A5 to H5 of WorkSheet
workSheet("A5:H5").Replace("old", "new")

workBook.SaveAs("sample.xlsx")
$vbLabelText   $csharpLabel

有关如何编写 Excel .NET 应用程序的更多信息,请查看我们的完整教程,了解如何打开和写入 Excel 文件 C#


教程快速访问

阅读应用程序接口参考

阅读 IronXL 文档,包括库中所有可用函数、功能、命名空间、类和枚举的列表。

阅读应用程序接口参考
Documentation related to 教程快速访问
查克尼特·宾
软件工程师
Chaknith 负责 IronXL 和 IronBarcode 的工作。他在 C# 和 .NET 方面拥有深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的洞察力,有助于提升产品、文档和整体体验。