如何用 C# 在 .NET 中写入 Excel 文件

使用 IronXL 在 C# 中编写 Excel .NET 函数

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

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

快速入门:向指定单元格写入值

本示例展示了如何使用 IronXL 轻松地将值写入单个单元格,只需几行代码即可保存 Excel 文件——无需样板代码或复杂操作即可上手。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronXL

    PM > Install-Package IronXL.Excel

  2. 复制并运行这段代码。

    worksheet["A1"].Value = "Hello, IronXL!";
    workbook.SaveAs("output.xlsx");
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronXL,免费试用!
    arrow pointer

编写 Excel .NET 指令

  • 下载适用于 Excel .NET 的库
  • 在特定单元格中写入值
  • 在多个单元格中写入固定值
  • 在单元格范围内写入动态值
  • 替换特定行、列、范围等中的单元格值
How To Work related to 使用 IronXL 在 C# 中编写 Excel .NET 函数

访问 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 文件中写入数据,但基本方法是使用ExcelCell 。 为此,可以访问已打开的 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

这段代码会将new value写入 Excel 文件sample.xlsxSheet1工作表的A1单元格。 同样地,我们可以在 Excel 文件的任何单元格地址中插入值。

注意:在工作表中写入新值后,不要忘记保存 Excel 文件,如上例所示。

强制指定精确值

设置Value属性时,IronXL 会尝试将其转换为相应的值类型。 有时,这种评估是不理想的,因为用户希望强制将确切值分配给单元格而不进行转换。 为此,请将该值赋为字符串。 在 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

将静态值写入指定范围

我们可以将新值写入多个单元格(称为范围),如下所示:

// Assign a static value to a range of cells
worksheet["B2:C5"].Value = "static value";
// Assign a static value to a range of cells
worksheet["B2:C5"].Value = "static value";
' Assign a static value to a range of cells
worksheet("B2:C5").Value = "static value"
$vbLabelText   $csharpLabel

这样,我们就指定了要写入数据的单元格范围From "到Tonew 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

这段代码会将new valueB2写入 Excel 文件sample.xlsx工作表Sheet1中的C5 。 它使用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.xlsxB列第27 。 我们可以在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

上述函数会将new value写入整个 Excel 工作表,覆盖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

这将仅在指定的行索引处用new value覆盖old value

替换指定列中的单元格值

同样地,如果我们想在特定列中用new value覆盖old 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

上述代码会将new value写入指定列索引以替换old 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

这将把new value写入old value上方,但仅限于指定范围内的单元格。

让我们来看一个例子,了解如何使用上述所有函数在 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 应用程序等更多信息,请查看我们关于如何使用 C# 打开和写入 Excel 文件的完整教程。


教程快速访问

阅读 API 参考文档

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

阅读 API 参考文档
Documentation related to 教程快速访问

常见问题解答

如何开始在 .NET 中编写 Excel 文件?

要开始使用 IronXL,请下载库并在项目中包含它。在 C# 代码中通过使用 using IronXL 导入库。

如何在 Excel 工作表中的特定单元格中写入值?

要使用 IronXL 在特定单元格中写入值,使用其地址访问单元格,如 worksheet['A1'],然后使用 .Value 属性分配值。

如何在 Excel 中将固定值分配给单元格范围?

要使用 IronXL 将固定值分配给范围,请使用单元格地址指定范围,如 worksheet['B2:C5'],并将 .Value 属性设置为所需的固定值。

我可以在 Excel 中向单元格范围写入动态值吗?

可以,使用 IronXL,您可以通过循环或自定义逻辑向范围写入动态值。例如,您可以迭代单元格地址并根据要求分配动态值。

如何在 Excel 工作表中替换现有单元格值?

使用 IronXL,您可以使用Replace()方法在工作表、行、列或指定范围上将“旧值”替换为“新值”。

使用 Value 和 StringValue 有什么区别?

在 IronXL 中,.Value 属性可能会将分配的值转换为特定类型格式,而 .StringValue 则将值分配为字符串,以避免转换。

如何打开并访问 Excel 文件中的特定工作表?

使用 IronXL 的 WorkBook.Load('path/to/your/excel-file.xlsx') 加载文件,并使用 workbook.GetWorkSheet('SheetName') 访问特定的工作表。

在写入新值后是否有必要保存 Excel 文件?

是的,使用 IronXL 时,在进行更改后必须使用 workbook.SaveAs('filename.xlsx') 方法保存 Excel 文件以持久化更改。

如何写入新值以替换特定行中的旧值?

使用 IronXL,通过 worksheet.Rows[index] 访问行,然后使用旧值和新值调用 Replace() 方法。

我可以替换特定列中的值吗?

是的,使用 IronXL,通过 worksheet.Columns['A'] 访问列,并使用 Replace() 方法将旧值替换为该列中的新值。

如何确保我的 C# 项目可以与 Excel 文件交互?

确保您的 C# 项目引用了 IronXL 库,通过下载它并将其添加到项目的引用中。这样可以促进与 Excel 文件的交互。

在 .NET 中写入 Excel 文件时的一些常见问题是什么?

常见问题包括未正确引用 IronXL 库、单元格地址格式不正确以及忘记保存更改。确保正确设置和语法。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 1,738,553 | Version: 2025.11 刚刚发布