如何在Excel中自动调整行和列的大小 | IronXL

如何在 C# 中自动调整 Excel 行和列的大小;

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

IronXL 通过 AutoSizeRow()AutoSizeColumn() 等方法在 C# 中自动调整行和列的大小,这些方法可根据单元格内容调整尺寸,从而消除手工电子表格格式化并支持合并单元格计算。 该功能通过动态调整单元格尺寸以适应其内容,实现 Excel 工作流程自动化,确保无需人工干预即可生成专业的电子表格。

快速入门:通过一次调用自动调整列或行的大小

使用 IronXL,您可以在一行中调整任意行或列的大小。使用 WorkSheet.AutoSizeColumn(int, bool)WorkSheet.AutoSizeRow(int, bool) 根据单元格内容调整尺寸(合并单元格可选)。 这种方法适用于所有 .NET 平台,无需安装 Excel。

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

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

    PM > Install-Package IronXL.Excel

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

    // One-line: auto-resize column A including merged cells
    workSheet.AutoSizeColumn(0, true);
    // Or auto-resize row 5 quickly
    workSheet.AutoSizeRow(4, true);
  3. 部署到您的生产环境中进行测试

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

如何自动调整行的大小?

AutoSizeRow 方法可根据内容自动调整指定行的高度。 该功能可确保单元格内的所有文本都清晰可见,防止截断并提高可读性。 When working with Excel files without Interop, IronXL calculates optimal row height based on font size, cell content, and formatting attributes.

:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-rows.cs
using IronXL;

// Load existing spreadsheet
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Apply auto resize on row 2
workSheet.AutoSizeRow(1);

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

' Load existing spreadsheet
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

' Apply auto resize on row 2
workSheet.AutoSizeRow(1)

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

自动调整大小算法会考虑字体度量、单元格填充和文本封装设置,以确定最佳高度。 对于从传统 Excel 自动化迁移过来的开发人员来说,这提供了一个无需安装 Excel 的高效替代方案。

结果是什么样的?

数据网格的前后对比,显示自动调整大小的行扩展以显示完整的员工信息

如何自动调整列的大小?

使用 AutoSizeColumn 方法根据内容长度调整列宽。 这种方法会分析每列中最长的内容,并相应调整宽度,确保所有数据都清晰可见,无需水平滚动。 该算法考虑了文本长度、数字格式、日期显示以及影响所需宽度的其他单元格格式。

:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-advance-rows.cs
using IronXL;

// Load existing spreadsheet
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Apply auto resize to rows individually
workSheet.AutoSizeRow(0, true);
workSheet.AutoSizeRow(1, true);
workSheet.AutoSizeRow(2, true);

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

' Load existing spreadsheet
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

' Apply auto resize to rows individually
workSheet.AutoSizeRow(0, True)
workSheet.AutoSizeRow(1, True)
workSheet.AutoSizeRow(2, True)

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

在处理财务数据或报告时,适当大小的列对于可读性至关重要。 IronXL's auto-resize functionality integrates with features like cell borders and alignment to create professional spreadsheets.

结果是什么样的?

自动调整大小前后的 Excel 电子表格:截断文本的窄列与显示完整内容的适当大小的列

所有行和列索引位置均采用从零开始的索引方式。


如何使用合并单元格处理高级行大小调整?

AutoSizeRow 方法的另一个重载需要第二个布尔参数。 该参数可让您在调整大小时考虑合并的单元格。 When working with merged cells in Excel, auto-resize behavior becomes more complex as content spans multiple cells.

:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-advance-rows.cs
using IronXL;

// Load existing spreadsheet
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Apply auto resize to rows individually
workSheet.AutoSizeRow(0, true);
workSheet.AutoSizeRow(1, true);
workSheet.AutoSizeRow(2, true);

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

' Load existing spreadsheet
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

' Apply auto resize to rows individually
workSheet.AutoSizeRow(0, True)
workSheet.AutoSizeRow(1, True)
workSheet.AutoSizeRow(2, True)

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

合并单元格计算如何工作?

如果内容的高度为 192 像素,且位于跨 3 行的合并区域中,则在对其中任何一行应用自动调整大小时,算法会将 192 px 除以 3,从而使每一行的大小为 64 px。 需要对每一行单独应用 AutoSizeRow 方法。 这种分发方式可确保合并后的内容在合并区域的所有行中正常显示。

Excel 自动调整行大小功能前后对比,显示高度从 99 像素优化为 33 像素

如果该值设置为 false 会怎样?

当设置为 false 时,AutoSizeRow 方法将根据内容最多的单元格调整行高度。 In Microsoft Excel, merging cells retains only the upper-left value and clears the rest. However, IronXL's Merge operation preserves values of other cells in the merged region, providing more flexibility with complex spreadsheets.

:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-advance-rows-false.cs
using IronXL;

workSheet.Merge("A1:A3");

workSheet.AutoSizeRow(0, false);
workSheet.AutoSizeRow(1, false);
workSheet.AutoSizeRow(2, false);
Imports IronXL

workSheet.Merge("A1:A3")

workSheet.AutoSizeRow(0, False)
workSheet.AutoSizeRow(1, False)
workSheet.AutoSizeRow(2, False)
$vbLabelText   $csharpLabel
前后对比,显示 Excel 自动调整行大小功能改善了电子表格单元格中文字的可见性

For demonstration purposes, I manually adjusted row height instead of using the Excel autofit row height function to avoid adding noticeable top and bottom padding.

useMergedCells 参数设置为 false 时,将不考虑合并单元格的高度。 每一行的高度完全根据其内容计算。 无论合并到哪个区域,这种方法都能保持一致的行高。

如何使用合并单元格处理高级列大小调整?

AutoSizeRow 类似,您可以使列的大小调整考虑合并单元格的宽度。 当设置为 true 时,如果合并单元格的内容最长,则调整后的列宽度等于合并单元格的宽度除以合并区域中的列数。 This feature helps when creating spreadsheets with complex layouts.

:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-advance-columns.cs
using IronXL;

// Load existing spreadsheet
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Apply auto resize to columns individually
workSheet.AutoSizeColumn(0, true);
workSheet.AutoSizeColumn(1, true);
workSheet.AutoSizeColumn(2, true);

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

' Load existing spreadsheet
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

' Apply auto resize to columns individually
workSheet.AutoSizeColumn(0, True)
workSheet.AutoSizeColumn(1, True)
workSheet.AutoSizeColumn(2, True)

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

合并单元格宽度计算如何工作?

如果在跨 2 列的合并区域中,内容的宽度为 117 像素,对任意一列应用自动调整大小后,每列的宽度为 59 像素。 AutoSizeColumn 方法必须单独应用于每一列。 这种比例分布可确保合并后的内容在合并区域的所有列上都能正确显示。

前后对比显示 Excel 列自动调整将 B 列宽度从 117 像素减少到 59 像素

如果该值设置为 false 会怎样?

当设置为 false 时,AutoSizeColumn 方法将根据内容最长的单元格调整宽度。 In Microsoft Excel, merging cells keeps only the upper-left value and erases the rest. However, IronXL's Merge method preserves values of other cells in the merged region, giving developers more control over their data.

:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-advance-columns-false.cs
workSheet.Merge("A1:B1");

workSheet.AutoSizeColumn(0, false);
workSheet.AutoSizeColumn(1, false);
workSheet.Merge("A1:B1")

workSheet.AutoSizeColumn(0, False)
workSheet.AutoSizeColumn(1, False)
$vbLabelText   $csharpLabel
Excel 自动调整列大小前后对比,显示文本数据的优化列宽调整

合并后的单元格宽度没有优先考虑,因此宽度没有变化,因为每一列的宽度都是根据其内容宽度计算出来的。

Excel 和 IronXL Auto Resize 有哪些区别?

了解 Excel 本机自动拟合功能与 IronXL.Excel 实现之间的差异有助于开发人员在自动执行电子表格操作时做出明智的决策。 在保持跨平台一致性或需要精确控制单元格尺寸时,这些差异非常重要。

行如何区别?

Excel 的自动调整行高功能会对单元格应用明显的上下填充。 IronXL 可以精确控制行高,准确计算内容所需的空间,无需额外填充。 在处理密集的数据或需要精确的打印布局时,这种差异非常明显。

Excel 与 IronXL 自动调整大小对比,显示对相同测试数据的不同行处理

列是如何区分的?

Excel 的自动调整列宽功能会对单元格进行左右填充,但效果并不明显。 IronXL focuses on exact content width, beneficial when working with automated reporting systems where space optimization is crucial.

Excel 与 IronXL 列自动调整大小对比,显示相同内容的不同宽度测量值

如何手动调整高度和宽度?

除了使用 AutoSizeRowAutoSizeColumn 方法自动计算和调整尺寸外,您还可以手动调整列和行的宽度和高度,以满足特定要求。 在实施标准化报告格式或使用需要特定尺寸的模板时,手动调整尺寸非常有用。

  • 调整高度:设置 RangeRowHeight 属性
  • 调整宽度:设置 RangeColumnWidth 属性
:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-manual.cs
using IronXL;

// Load existing spreadsheet
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

RangeRow row = workSheet.GetRow(0);
row.Height = 10; // Set height

RangeColumn col = workSheet.GetColumn(0);
col.Width = 10; // Set width

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

' Load existing spreadsheet
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet

Dim row As RangeRow = workSheet.GetRow(0)
row.Height = 10 ' Set height

Dim col As RangeColumn = workSheet.GetColumn(0)
col.Width = 10 ' Set width

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

Excel 的高度和宽度使用什么单位?

Excel 中的高度和宽度测量单位不同。 高度以 1/20 点为单位,而宽度则基于使用 Normal 样式中指定的字体在单元格中适合的 "0 "的数量。 When working with IronXL's API, understanding these conversions is essential for precise layouts.

为简化单位转换,请将 IronXL 值解释为 Microsoft Excel 中的显示像素。 像素的定义是一英寸的 1/96,与屏幕分辨率无关。 Excel 与分辨率无关,不依赖物理像素。

IronXL 与 Excel 高度和宽度测量值之间的关系:

  • 高度:RangeRow.Height=10的结果约为1 像素
  • 宽度:RangeColumn.Width = 23.255 相当于 1 像素

对于需要精确控制电子表格布局的开发人员来说,这些转换系数可以实现精确的尺寸计算。 结合其他格式化功能,手动调整大小可完全控制 Excel 文档的外观。 Remember to apply your license key when deploying applications using these features in production.

常见问题解答

如何在 C# 中根据单元格内容自动调整 Excel 行的大小?

IronXL 提供了 AutoSizeRow 方法,可根据单元格内容自动调整行高。只需调用 workSheet.AutoSizeRow(rowIndex,includeMergedCells),其中 rowIndex 是基于零的行号。该方法会根据字体大小、单元格内容和格式属性计算出最佳高度,确保所有文本都清晰可见,不会截断。

能否以编程方式自动调整 Excel 电子表格中列的大小?

是的,IronXL 提供 AutoSizeColumn 方法来自动调整列宽。使用 workSheet.AutoSizeColumn(columnIndex, includeMergedCells) 可根据最长内容调整列的大小。该算法会考虑文本长度、数字格式、日期显示和其他单元格格式,以确定最佳宽度。

自动调整大小是否适用于合并单元格?

IronXL 支持通过 AutoSizeRow 和 AutoSizeColumn 方法中的布尔参数自动调整合并单元格的大小。将第二个参数设置为 true(例如,workSheet.AutoSizeColumn(0, true)),以便在确定适当尺寸时包含合并单元格计算。

自动调整行和列的大小时要考虑哪些因素?

IronXL 的自动调整大小算法考虑了多种因素,包括字体度量、单元格填充、文本封装设置、数字格式、日期显示和单元格边框。这种全面的方法可确保电子表格具有专业外观,单元格大小合适,可容纳所有内容,无需人工干预。

我需要安装 Microsoft Excel 才能使用自动调整大小功能吗?

不,IronXL 可独立运行,无需安装 Excel。该库在内部执行所有计算,因此非常适合无法安装 Excel 的服务器环境和部署场景。这种方法适用于所有 .NET 平台。

能否一次自动调整多行或多列的大小?

虽然 IronXL 的 AutoSizeRow 和 AutoSizeColumn 方法适用于单个行/列,但您可以轻松地循环使用多个项目来调整它们的大小。这样就可以对整个工作表或特定范围进行批量处理,从而高效地实现 Excel 工作流程自动化。

Curtis Chau
技术作家

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

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

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