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

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

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

通过访问工作表、使用简单的括号符号设置单元格值以及保存更改,使用 IronXL.Excel 在 C# 中编写 Excel 数据。 该库支持写入特定的单元格和范围,并可在不需要复杂代码的情况下以编程方式替换数值。

C# 应用程序经常需要以编程方式更新文件并在 Excel 电子表格中写入新数据。 Excel .NET 功能有时可能比较复杂,但使用 IronXL 库,这项任务就变得简单明了,并可处理任何格式的 Excel 电子表格。 直接访问特定单元格,并以最少的代码分配自定义值。 无论您是创建新电子表格还是编辑现有 Excel 文件,IronXL.Excel 都能为您的所有 Excel 自动化需求提供直观的方法。

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

本示例展示了如何使用 IronXL.Excel 在单个单元格中写入一个值,并在短短几行中保存 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

此代码在 Excel 文件 sample.xlsx 中工作表 Sheet1 的单元格 A1 中写入 新值。 同样,您也可以在 Excel 文件的任何单元格地址中插入值。对于更高级的格式化选项,如设置单元格字体和大小或应用背景颜色和图案,IronXL.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

这样,您就可以指定 FromTo 单元格的范围,数据将被写入其中。 新值将被写入此范围内的所有单元格中。 要了解更多关于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

此代码在 Excel 文件 sample.xlsx 的工作表 Sheet1 中从 B2C5 写入 新值。 它使用Excel单元格的静态值。


如何在范围中写入动态值?

您还可以为范围添加动态值,如下所示。 当您需要从数据库中填充数据或生成报告时,这一点尤其有用。 您可能还想了解导入和导出为 DataSet 以进行更复杂的数据操作。

: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.xlsx 中的 B 列27 中写入动态值。 您可以在 sample.xlsx 上看到代码的结果。

电子表格显示两个突出显示的范围 B2:B7 和 D2:D7,其中填充了 Value2 至 Value7

如何替换 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 工作表中写入 新值,覆盖 旧值

如何替换特定行中的值?

如果只想在特定行中写入新值,请按以下步骤操作:

: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

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

如何替换特定列中的值?

同样,如果您想在特定列中的 旧值 上写入 新值,请执行以下操作:

: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

上述代码将写入 新值以替换 旧值,但仅限于指定列索引中。 工作表的其余部分保持不变。

如何替换特定范围内的值?

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 应用程序等更多信息,请查看我们关于如何使用 C# 打开和写入 Excel 文件的完整教程。 如果您正在使用不同的文件格式,您可能也会发现我们的电子表格文件类型转换指南很有帮助。


教程快速访问

### 阅读 API 参考文档

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

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

常见问题解答

如何使用 C# 将数值写入 Excel 文件中的特定单元格?

使用 IronXL,您只需使用括号符号访问特定单元格并设置其 Value 属性,即可将内容写入该单元格。例如:worksheet["A1"].Value = "Hello, IronXL!"; 然后用 workbook.SaveAs("output.xlsx") 保存工作簿。这种直接的方法无需复杂的 Excel 互操作代码。

以编程方式将数据写入 Excel 文件的第一步是什么?

第一步是使用 IronXL 的 WorkBook.Load() 方法加载 Excel 文件,然后访问要写入数据的特定工作表。IronXL.Excel 通过直观的方法使这一切变得简单,让您可以打开任何 Excel 格式,并立即开始处理单元格和范围。

我可以在 Excel 中同时向多个单元格写入数据吗?

是的,IronXL 支持高效写入多个单元格。您可以单独向多个特定单元格写入静态值,或使用单元格范围以编程方式跨多个单元格写入动态值。该库提供了单个单元格操作和批量数据写入的方法。

如何替换 Excel 电子表格中的现有单元格值?

通过 IronXL,您只需访问单元格并为其赋值,即可替换单元格值。您可以替换特定行、列或范围中的值。为单元格分配新值时,程序库会自动覆盖现有数据。

编写数据时支持哪些 Excel 文件格式?

IronXL.Excel 支持写入所有主要的 Excel 文件格式,包括 .xlsx、.xls、.xlsm 和 CSV 文件。该库可自动处理特定格式的要求,让您无需更改代码即可处理任何格式的 Excel 电子表格。

用 C# 编写 Excel 文件需要安装 Microsoft Excel 吗?

不,IronXL.Excel 可独立运行,无需 Microsoft Excel 或 Office Interop。它是一个独立的 .NET 库,可以在任何系统上以编程方式读取、写入和创建 Excel 文件,因此非常适合服务器应用程序和未安装 Excel 的环境。

将数据写入 Excel 文件后,如何保存更改?

向单元格写入数据后,使用 IronXL 的 SaveAs() 方法保存更改,以创建新文件,或使用 Save() 方法覆盖现有文件。该库可确保将所有单元格更新、格式化和公式正确保存为您指定的 Excel 文件格式。

Curtis Chau
技术作家

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

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

准备开始了吗?
Nuget 下载 1,846,091 | 版本: 2026.2 刚刚发布