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

How to Auto Resize Rows and Columns

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

Resizing rows and columns in a spreadsheet can save a lot of space and make it more readable. The IronXL C# library provides the functionality to automatically resize rows and columns. Since it is done in C#, the resize methods can be called for all the existing rows and columns, automating the manual task in the spreadsheet.

Quickstart: Auto-Resize a Column or Row with a Single Call

With IronXL, you can resize any row or column in just one line—no Interop, no fuss. Use WorkSheet.AutoSizeColumn(int, bool) or WorkSheet.AutoSizeRow(int, bool) to instantly adjust dimensions based on cell content (merged cells optional).

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronXL with NuGet Package Manager

    PM > Install-Package IronXL.Excel

  2. Copy and run this code snippet.

    // One-line: auto-resize column A including merged cells
    workSheet.AutoSizeColumn(0, true);
    // Or auto-resize row 5 quickly
    workSheet.AutoSizeRow(4, true);
  3. Deploy to test on your live environment

    Start using IronXL in your project today with a free trial
    arrow pointer

Auto Resize Rows Example

The AutoSizeRow method automatically resizes the height of a specified row(s) based on its content.

: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

Demonstration

Auto Resize Row

Auto Resize Columns Example

Use the AutoSizeColumn method to resize the width of column(s) based on its content length.

: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

Demonstration

Auto Resize Column

提示All row and column index positions follow zero-based indexing.


Advanced Auto Resize Rows Example

Another overload of the AutoSizeRow method takes a second parameter as a Boolean value. This parameter lets you consider the merged cells when resizing.

: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

Example

For instance, suppose the content has a height of 192 pixels and is located in a merged region that spans 3 rows. When applying auto resize to any of these rows, the algorithm divides the content's height of 192 px by 3, resulting in a height of 64 px for each row. Remember that the AutoSizeRow method needs to be applied to each row individually.

Advance Auto Resize Row

What if the value is set to false?

When the value is set to false, the AutoSizeRow method will adjust the row height based on the content of the cell with the highest height. 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
Advance Auto Resize Row

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

With the useMergedCells parameter set to false, the height of merged cells is not being taken into consideration. As a result, there are no changes in height, and each row's height is calculated solely based on its content.

Advanced Auto Resize Columns Example

Similar to AutoSizeRow, you can also make the resizing of columns consider the width of merged cells. When set to true, the width of merged cells will be taken into account. If the merged cell has the longest content, the width of the resized column will be the merged cell's width divided by the number of columns in the merged region.

: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

Example

For instance, if the content has a width of 117 pixels and is located in a merged region that spans 2 columns, applying auto resize on any of these columns will result in the width of 59 pixels for each column. The AutoSizeColumn method needs to be applied to each column individually.

Advance Auto Resize Column

What if the value is set to false?

When the value is set to false, the AutoSizeColumn method adjusts the width based on the cell's content with the longest width. 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
Advance Auto Resize Column

The width of merged cells was not being prioritized, resulting in no changes in width because each column's width was calculated based on its content width.

The Differences between Excel and IronXL Auto Resize

Rows

The Excel autofit row height function applies a noticeable top and bottom padding to the cell.

Excel and IronXL Auto Resize Row comparison

Columns

The Excel autofit column width function also applies a left and right padding to the cell, but it is less noticeable.

Excel and IronXL Auto Resize Column comparison

Manual Resizing of Height and Width Example

In addition to relying on the AutoSizeRow and AutoSizeColumn methods to calculate and adjust the width and height of the content, you also have the flexibility to manually adjust the width and height of columns and rows to meet your specific requirements. This allows you to set them to a certain value that suits your needs.

  • Adjust the height: set the Height property of the RangeRow.
  • Adjust the width: set the Width property of the RangeColumn.
: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

Height and Width Units in Excel

The measurement units for height and width in Excel differ from each other. Specifically, the height is measured in 1/20 of a point, while the width is determined based on the number of "0"s that can fit in a cell using the font specified in the "Normal" style.

To simplify the conversion of units, let's interpret the value in IronXL, which corresponds to the display pixels in Microsoft Excel. It is important to note that a pixel does not represent a physical point on the screen; rather, it is defined as 1/96 of an inch, regardless of the screen's actual resolution. Excel itself is designed to be resolution-independent and does not rely on physical pixels.

To establish a relationship between IronXL and Excel's height and width measurements, you can consider the following approximations:

  • Height: RangeRow.Height = 10 will result in an approximate height of 1 pixel.
  • Width: RangeColumn.Width = 23.255 will correspond to 1 pixel.

常见问题解答

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

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

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

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

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

IronXL支持通过在AutoSizeRow和AutoSizeColumn方法中使用布尔参数,在调整大小时考虑合并的单元格来调整大小。

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

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

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

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

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

您可以通过调整IronXL中RangeRow和RangeColumn的Height和Width属性手动设置行和列的高度和宽度。

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

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

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

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

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

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

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

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

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