跳至页脚内容
使用 IRONXL

如何在 C# 中使用 Excel 自动调整单元格

在当今数据驱动的世界中,Microsoft Excel 仍然是企业和专业人士不可或缺的工具。无论是处理数据、生成报告还是可视化数据,Excel 的多功能性都无可匹敌。 然而,当涉及到在 C# 中编程操作 Excel 文件时,开发人员常常面临挑战。 这时 IronXL 库便能派上用场,为 C# 环境中的 Excel 自动化提供无缝解决方案。

IronXL 库由 Iron Software 提供,为 C# .NET 和 VB.NET 环境中无缝处理 Excel 文档提供直观的 API。 使用 IronXL,无需安装 Microsoft Office 或 Excel Interop 组件。 它使开发人员能够轻松读取、编辑和创建 Excel 电子表格文件,完全支持包括 .NET 8、7、6、Core Frameworks 和 Azure 等在内的各种 .NET 框架。

在本文中,我们将学习如何使用 C# 和 IronXL 调节 Excel 中文件列宽和行高。

  1. 创建一个 Visual Studio 项目以演示 Excel 工作表中的自动调整单元格。
  2. IronXL 库安装到项目中。
  3. 使用 IronXL 库自动调整列宽。
  4. 使用 IronXL 库自动调整行高。
  5. 使用 IronXL 库手动设置列宽和行高。

IronXL

IronXL 库是一个通用的 .NET 库,旨在简化 C# 开发人员对 Excel 电子表格的操作。 提供快速且直观的 API,IronXL 使用户无需依赖 Office Interop 就能轻松访问、修改和生成 Excel 文件。其兼容性扩展到包括 .NET Core 和 Azure 在内的各种 .NET 框架,而无需任何特殊依赖项或安装 Microsoft Office。支持包括 C#、VB.NET 和 F# 在内的多种 .NET 语言,IronXL 满足了包括控制台、网络和桌面应用程序在内的广泛开发场景。 此外,IronXL 的兼容性跨多个平台,包括 Windows、Linux、macOS、Docker、Azure 和 AWS,成为寻求在多样化环境中实现高效 Excel 集成的开发人员的必备工具。

IronXL 库的关键功能

  1. 轻松集成IronXL 无缝集成到 C# 应用程序中,提供简单直观的 Excel 自动化 API。 开发人员可以快速入门,学习曲线最低。
  2. 读写 Excel 文件:使用 IronXL,可以轻松地从现有的 Excel 文件中读取数据并将数据写入新的或现有的电子表格。 这种功能对于完成数据导入/导出和报告生成等任务至关重要。
  3. 格式化与样式:IronXL 使您能够对 Excel 单元格应用格式和样式,包括字体、颜色、边界等。 这确保您生成的 Excel 文件保持专业和精致的外观。
  4. 公式支持:需要进行复杂计算或将公式应用于 Excel 数据? IronXL 支持 Excel 公式,允许您自动执行计算和数据操作。
  5. 自动调整单元格:IronXL 提供的便捷功能之一是能够在 Excel 中自动调整单元格,确保内容紧凑地适应该单元格而不被截断。

步骤 1:创建一个 Visual Studio 项目以演示 Excel 工作表中的自动调整单元格。

要开始,请按以下所示创建一个 Visual Studio 项目。 从列表中选择控制台应用程序模板

如何在 Excel 中使用 C# 自动调整单元格:图 1 - 打开 Visual Studio,并添加一个类型为 C# 控制台应用程序的新项目。

提供项目名称和位置

如何在 Excel 中使用 C# 自动调整单元格:图 2 - 接下来,指定项目名称和位置。

从下拉菜单中选择所需的 .NET 版本并点击创建

如何在 Excel 中使用 C# 自动调整单元格:图 3 — 然后,选择所需的 .NET 框架版本并点击创建。

步骤 2:将 IronXL 库安装到项目中。

从 Visual Studio NuGet 包管理器安装 IronXL

如何在 Excel 中使用 C# 自动调整单元格:图 4 - 使用 NuGet 包管理器搜索栏中搜索 IronXL 为解决方案管理 NuGet 包,选择项目并点击安装按钮。

这个包也可以使用 NuGet 命令行安装

dotnet add package IronXL.Excel --version 2024.3.20
# or
Install-Package IronXL.Excel
dotnet add package IronXL.Excel --version 2024.3.20
# or
Install-Package IronXL.Excel
SHELL

如何在 Excel 中使用 C# 自动调整单元格:图 5 - IronXL.Excel NuGet 包

这样我们就可以开始编写代码了。

步骤 3:使用 IronXL 库自动调整列宽

IronXL 库的 AutoSizeColumn 方法调整列的宽度以适合其内容。 此方法根据单元格中使用的字体计算文本宽度。 如果系统中找不到确切的字体,它将尝试使用默认字体测量宽度。 如果找不到默认字体,它将尝试使用任何可用的字体。 但是,如果找不到字体,则会抛出异常。 它使用从零开始的列索引作为参数。 必须在 0 和 (ColumnCount - 1) 定义的范围内。 如果给定的 columnIndex 超出有效范围,则会抛出 ArgumentException。 当机器上未安装字体时,会抛出 SixLabors.Fonts.FontException

现在,让我们看看如何使用它调整 Excel 文件的大小。你可以从 这里 下载一个示例 Excel 文件。

输入文件

您可以看到这里的列宽未正确定义,因此非常难以阅读。 现在让我们 看看我们如何使用 IronXL 库自动调整 Excel 表中的列宽。

如何在 Excel 中使用 C# 自动调整单元格:图 6 - 输入 Excel 文件

using IronXL;
// Load example spreadsheet
WorkBook workBook = WorkBook.Load("FinancialSample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
var colCount = workSheet.Columns.Count();

for (int i = 0; i < colCount; i++)
{ 
    // Auto-fit column width for index i
    workSheet.AutoSizeColumn(i);
}

// Save the autofitted workbook as a new file
workBook.SaveAs("autoResize.xlsx"); // Result file
using IronXL;
// Load example spreadsheet
WorkBook workBook = WorkBook.Load("FinancialSample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
var colCount = workSheet.Columns.Count();

for (int i = 0; i < colCount; i++)
{ 
    // Auto-fit column width for index i
    workSheet.AutoSizeColumn(i);
}

// Save the autofitted workbook as a new file
workBook.SaveAs("autoResize.xlsx"); // Result file
Imports IronXL
' Load example spreadsheet
Private workBook As WorkBook = WorkBook.Load("FinancialSample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet
Private colCount = workSheet.Columns.Count()

For i As Integer = 0 To colCount - 1
	' Auto-fit column width for index i
	workSheet.AutoSizeColumn(i)
Next i

' Save the autofitted workbook as a new file
workBook.SaveAs("autoResize.xlsx") ' Result file
$vbLabelText   $csharpLabel

代码解释

  1. 最初,我们使用 WorkBook.Load() 方法加载 FinancialSample.xlsx。
  2. 然后我们获取用于调整的列数。
  3. 我们遍历所有列索引以自动调整列宽。
  4. 最后,我们将结果保存为名为 autoResize.xlsx 的新文件。

输出文件

下面您可以看到所有列都已自动调整大小并可见。

如何在 Excel 中使用 C# 自动调整单元格:图 7 - 自动调整列宽的输出 Excel。

步骤 4:使用 IronXL 库自动调整行高

AutoSizeRow 方法调整行的高度以适应其内容。 需要注意的是,此方法根据单元格中使用的字体计算文本高度。 如果系统中找不到确切的字体,它将尝试使用默认字体测量宽度。 如果找不到默认字体,它将尝试使用任何可用的字体。 但是,如果找不到字体,则会抛出异常。 它使用从零开始的行索引作为参数。 必须在 0 和 (RowCount - 1) 定义的范围内。 如果给定的 rowIndex 超出有效范围,则会抛出 ArgumentException。 当机器上未安装字体时,会抛出 SixLabors.Fonts.FontException

输入Excel文件

在下面的示例中,您可以看到某些行未调整大小以合适数据。 现在让我们看看用 C# 代码自动调整 Excel 行高。

如何在 Excel 中使用 C# 自动调整单元格:图 8 - 输入 Excel 文件

using IronXL;
// Load example spreadsheet
WorkBook workBook = WorkBook.Load("FinancialSample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
var rowCount = workSheet.RowCount;

for (int i = 0; i < rowCount; i++)
{
    // Auto-fit row height for index i
    workSheet.AutoSizeRow(i);
}

// Save the autofitted workbook as a new file
workBook.SaveAs("autoResizeRows.xlsx"); // Result file
using IronXL;
// Load example spreadsheet
WorkBook workBook = WorkBook.Load("FinancialSample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
var rowCount = workSheet.RowCount;

for (int i = 0; i < rowCount; i++)
{
    // Auto-fit row height for index i
    workSheet.AutoSizeRow(i);
}

// Save the autofitted workbook as a new file
workBook.SaveAs("autoResizeRows.xlsx"); // Result file
Imports IronXL
' Load example spreadsheet
Private workBook As WorkBook = WorkBook.Load("FinancialSample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet
Private rowCount = workSheet.RowCount

For i As Integer = 0 To rowCount - 1
	' Auto-fit row height for index i
	workSheet.AutoSizeRow(i)
Next i

' Save the autofitted workbook as a new file
workBook.SaveAs("autoResizeRows.xlsx") ' Result file
$vbLabelText   $csharpLabel

代码解释

  1. 最初,我们使用 WorkBook.Load() 方法加载 FinancialSample.xlsx。
  2. 我们检索总行数。
  3. 我们遍历所有行索引以自动调整行高。
  4. 最后,我们将结果保存为名为 autoResizeRows.xlsx 的新文件。

输出 Excel 文件

如何在 Excel 中使用 C# 自动调整单元格:图 9 - 自动调整行高的输出 Excel。

步骤 5:使用 IronXL 手动设置列宽和行高

除了自动调整行和列大小外,IronXL 还提供了手动调整到特定行高值和特定列宽值的选项。

输入Excel文件

在 Excel 中如何使用 C# 自动调整单元格:图 10 - 输入 Excel 文件

using IronXL;
// Load example spreadsheet
WorkBook workBook = WorkBook.Load("FinancialSample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Manually set row height and column width
RangeRow row = workSheet.GetRow(0);
row.Height = 500; // Set height
RangeColumn col = workSheet.GetColumn(0);
col.Width = 5000; // Set width

// Save the workbook with specific values set
workBook.SaveAs("specificValue.xlsx");
using IronXL;
// Load example spreadsheet
WorkBook workBook = WorkBook.Load("FinancialSample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Manually set row height and column width
RangeRow row = workSheet.GetRow(0);
row.Height = 500; // Set height
RangeColumn col = workSheet.GetColumn(0);
col.Width = 5000; // Set width

// Save the workbook with specific values set
workBook.SaveAs("specificValue.xlsx");
Imports IronXL
' Load example spreadsheet
Private workBook As WorkBook = WorkBook.Load("FinancialSample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

' Manually set row height and column width
Private row As RangeRow = workSheet.GetRow(0)
row.Height = 500 ' Set height
Dim col As RangeColumn = workSheet.GetColumn(0)
col.Width = 5000 ' Set width

' Save the workbook with specific values set
workBook.SaveAs("specificValue.xlsx")
$vbLabelText   $csharpLabel

代码解释

  1. 使用 WorkBook.Load() 函数加载 FinancialSample.xlsx。
  2. 检索特定行和列以手动调整其高度和宽度。
  3. 设置所需的高度和宽度值。
  4. 将修改后的文件保存为名为 specificValue.xlsx 的文件。

输出 Excel 文件

在 Excel 中如何使用 C# 自动调整单元格:图 11 - 手动调整列宽和高度的输出 Excel。

许可

获取免费试用,免费使用所有 IronXL 功能 30 天。

获得的许可证必须放置在 appSettings.json 文件中:

{
  "IronXL.License.LicenseKey": "myTrialKey"
}

结论

通过 IronXL 中的 AutoSizeColumnAutoSizeRow 等功能,开发人员可以轻松确保 Excel 电子表格根据其包含的内容动态调整,无论是导入的数据、动态报告、用户生成的内容,还是数据分析结果。

IronXL 与包括 .NET Core 和 Azure 在内的各种 .NET 框架的兼容性,确保开发人员能够将 Excel 自动化集成到多种应用程序中,而无需依赖于 Microsoft Office 或 Excel Interop。此外,IronXL 对多种 .NET 语言和平台的支持使其成为希望在各种开发环境中简化 Excel 操作任务的开发人员的多功能选择。

从本质上说,IronXL 让开发者能够在 Excel 自动化项目中提升生产力、精确性和灵活性,提供满足现代 C# 开发需求的全面功能套件。 无论是生成报告、分析数据还是呈现信息,IronXL 提供了在 C# 生态系统中实现 Excel 自动化所需的工具。

常见问题解答

我如何在Excel中使用C#自动调整单元格的大小?

要在Excel中使用C#自动调整单元格的大小,可以使用IronXL的AutoSizeColumnAutoSizeRow方法,它们会自动调整列宽和行高以适应内容。

使用.NET库进行Excel自动化的好处是什么?

使用像IronXL这样的.NET库来进行Excel自动化,可以简化读取、写入和格式化Excel文件等任务,无需安装Microsoft Office。这提升了C#应用程序的生产力和准确性。

如何在C#中手动调整Excel中的列宽和行高?

使用IronXL,你可以通过GetColumnGetRow方法来手动调整列宽和行高,以针对特定的列和行,然后设置它们的WidthHeight属性。

IronXL是否兼容.NET Core项目?

是的,IronXL完全兼容.NET Core项目,允许开发人员在现代.NET环境中无缝集成Excel自动化功能。

如何在 .NET 项目中安装 IronXL?

要在.NET项目中安装IronXL,请使用Visual Studio的NuGet包管理器或在命令行中运行命令dotnet add package IronXL.Excel

我可以在不安装Excel的情况下使用IronXL吗?

是的,IronXL允许你在不需要安装Microsoft Excel的情况下,在C#中以编程方式处理Excel文件。

如果我在自动调整单元格时遇到字体异常,该怎么办?

如果你在自动调整单元格时遇到SixLabors.Fonts.FontException,请确保系统上有必要的字体,因为IronXL使用这些字体来计算文本尺寸。

IronXL如何支持多种.NET语言?

IronXL支持包括C#、VB.NET和F#在内的多种.NET语言,为在不同编程环境中工作的开发人员提供灵活性和多样性。

我应该在项目中哪里添加IronXL的许可证密钥?

IronXL的许可证密钥应添加到项目的appSettings.json文件中,键为'IronXL.License.LicenseKey',以激活高级功能。

IronXL在Excel自动化中有哪些关键功能?

IronXL提供了关键功能,如与C#应用程序的轻松集成、读取和写入Excel文件、应用格式、支持Excel公式以及自动调整单元格以优化内容显示。

Curtis Chau
技术作家

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

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