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

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

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

调整电子表格中的行和列的大小可以节省大量空间,并使其更易于阅读。 IronXL C# 库提供了自动调整行和列大小的功能。 由于它是用 C# 实现的,因此可以对所有现有行和列调用调整大小的方法,从而自动执行电子表格中的手动任务。

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

使用 IronXL,您只需一行代码即可调整任何行或列的大小——无需互操作,轻松便捷。 使用WorkSheet.AutoSizeColumn(int, bool)WorkSheet.AutoSizeRow(int, bool)可以根据单元格内容(合并单元格可选)立即调整尺寸。

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方法会根据指定行的内容自动调整指定行的高度。

: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

示范

自动调整行大小

自动调整列宽示例

使用AutoSizeColumn方法根据列的内容长度调整列的宽度。

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

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

// Apply auto resize on column A
workSheet.AutoSizeColumn(0);

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

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

' Apply auto resize on column A
workSheet.AutoSizeColumn(0)

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

示范

自动调整列宽

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


高级自动调整行大小示例

AutoSizeRow方法的另一个重载版本接受第二个参数,该参数为布尔值。 此参数允许您在调整大小时考虑合并的单元格。

: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 像素除以 3 ,从而使每行的高度为 64 像素。 请记住, AutoSizeRow方法需要单独应用于每一行。

自动调整行大小

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

当该值设置为 false 时, AutoSizeRow方法将根据高度最高的单元格的内容调整行高。 In Microsoft Excel, when a range of cells is merged, it retains only the value of the upper-left cell and clears the rest. However, with IronXL, the Merge operation is performed without erasing the values of other cells in the merged region.

: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
自动调整行大小

For demonstration purposes, I manually adjusted the row height instead of using the Excel autofit row height function. 这样做是为了避免在顶部和底部增加明显的衬垫。

useMergedCells参数设置为 false 时,合并单元格的高度不会被考虑在内。 因此,高度不会发生变化,每一行的高度都完全根据其内容计算。

高级自动调整列宽示例

AutoSizeRow类似,您也可以让列的调整大小考虑合并单元格的宽度。 设置为true时,合并单元格的宽度将被考虑在内。 如果合并单元格的内容最长,则调整大小后的列的宽度将是合并单元格的宽度除以合并区域中的列数。

: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

示例

例如,如果内容宽度为117 像素,并且位于跨越2 列的合并区域中,则对其中任何一列应用自动调整大小,每列的宽度将变为59 像素。 需要对每一列单独应用AutoSizeColumn方法。

高级自动调整列宽

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

当该值设置为false时, AutoSizeColumn方法会根据宽度最长的单元格的内容来调整宽度。 In Microsoft Excel, when a range of cells is merged, it keeps only the upper-left value and erases the rest. However, the IronXL Merge method does NOT erase the value of other cells in the merged region.

: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 和 IronXL 自动调整大小的区别

Excel 的自动调整行高功能会在单元格顶部和底部添加明显的边距。

Excel 和 IronXL 自动调整行大小的比较

Excel 的自动调整列宽功能也会给单元格添加左右边距,但不太明显。

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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Excel中的高度和宽度单位

Excel中高度和宽度的计量单位不同。 具体来说,高度以 1/20 磅为单位进行测量,而宽度则根据使用"正常"样式中指定的字体在一个单元格中可以容纳的"0"的数量来确定。

为了简化单位换算,让我们来解释 IronXL 中的值,它对应于 Microsoft Excel 中的显示像素。 需要注意的是,像素并不代表屏幕上的物理点; 更确切地说,它被定义为 1/96 英寸,而与屏幕的实际分辨率无关。 Excel本身的设计与分辨率无关,并不依赖于物理像素。

为了建立 IronXL 和 Excel 的高度和宽度测量值之间的关系,您可以考虑以下近似值:

  • 高度: RangeRow.Height = 10将产生约1 pixel的高度。
  • 宽度: RangeColumn.Width = 23.255将对应于1 像素

常见问题解答

如何使用C#在Excel中自动调整行的大小?

5. 您可以利用 IronXL 中的 AutoSizeRow 方法,根据 Excel 工作表中内容的高度自动调整行高。

在Excel工作表中自动调整列大小的方法是什么?

6. IronXL 提供了 AutoSizeColumn 方法,该方法允许根据内容自动调整列宽。

如何确保在Excel中合并的单元格调整大小正确?

7. IronXL 支持通过在 AutoSizeRowAutoSizeColumn 方法中使用布尔参数来考虑合并单元格,从而调整合并单元格的大小。

IronXL相较于Excel的本身自动调整功能有什么优势?

IronXL提供了精确的单元格尺寸控制,不会像Excel的本身自动调整功能那样添加额外填充,从而允许更准确的单元格大小调整。

是否可以在不使用Microsoft Office Interop的情况下在C#中处理Excel文件?

是的,IronXL允许您直接在C#中处理Excel文件,而无需依赖Microsoft Office Interop,使其更高效且更易于使用。

如何使用C#在Excel文件中手动设置行和列的大小?

8. 您可以通过调整 IronXL 中 RangeRowRangeColumnHeightWidth 属性手动设置行和列的高度和宽度。

IronXL在设置行高和列宽时使用什么单位?

IronXL使用Excel的默认测量单位,其中高度为1/20点数,宽度按正常样式字体可以容纳的'0'的数量确定。

IronXL可以自动化Excel工作表尺寸调整过程吗?

是的,IronXL可以自动化行和列的调整,增强生产力,减少手动调整的需要。

是否有可用资源学习如何使用C#调整Excel行和列大小?

是的,IronXL提供了一个关于调整行和列的在线视频教程,可以在YouTube上观看,以帮助开发者学习如何使用这些功能。

自动调整对于Excel电子表格为什么重要?

自动调整对于提高Excel电子表格的可读性和美观性至关重要,确保所有内容都可见且整齐呈现,无需手动干预。

Chaknith Bin
软件工程师
Chaknith 在 IronXL 和 IronBarcode 工作。他在 C# 和 .NET 方面有着深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的见解有助于更好的产品、文档和整体体验。
准备开始了吗?
Nuget 下载 1,738,553 | Version: 2025.11 刚刚发布