如何在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

調整試算表中行和列的大小可以節省大量空間,並使其更易讀。 IronXL C# 庫提供自動調整行列大小的功能。 由於這是在 C# 中完成的,可以為所有現有行和列調用調整大小的方法,從而在電子表格中自動化手動任務。

作為標題:2(快速入門:通過一次調用自動調整列或行)

使用 IronXL,你可以只用一行代碼調整任何行或列的大小——無需 Interop,簡單高效。 使用 WorkSheet.AutoSizeColumn(int, bool)WorkSheet.AutoSizeRow(int, bool) 根據單元格內容即時調整尺寸(可選合併單元格)。

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
class="hsg-featured-snippet">

簡化工作流程(5 步)

  1. 下載 C# 庫以自動調整 Excel 中的行和列的大小
  2. 導入所需的 Excel 文件
  3. 利用 AutoSizeRow 方法自動調整行的大小
  4. 使用 AutoSizeColumn 方法根據內容寬度調整列的大小
  5. 根據需求設置高度和寬度值

自動調整行示例

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

示範

class="content-img-align-center">
class="center-image-wrapper"> 自動調整行

自動調整列示例

使用 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

示範

class="content-img-align-center">
class="center-image-wrapper"> 自動調整列

提示所有行和列的索引位置均為零基索引。


高級自動調整行示例

另一個 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 px 除以 3,結果是每行的高度為 64 px。 請記住,AutoSizeRow 方法需要單獨應用於每一行。

class="content-img-align-center">
class="center-image-wrapper"> 高級自動調整行

如果值設置為 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
class="content-img-align-center">
class="center-image-wrapper"> 高級自動調整行

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 方法單獨應用於每一列。

class="content-img-align-center">
class="center-image-wrapper"> 高級自動調整列

如果值設置為 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
class="content-img-align-center">
class="center-image-wrapper"> 高級自動調整列

合併單元格的寬度沒有被優先考慮,導致寬度沒有變化,因為每列的寬度是基於其內容的寬度計算出來的。

Excel 和 IronXL 自動調整的區別

Excel 的自動適應行高功能會對單元格應用顯著的上下填充。

class="content-img-align-center">
class="center-image-wrapper"> Excel 和 IronXL 自動調整行比較

Excel 的自動適應列寬功能同樣會對單元格應用左右填充,但不太明顯。

class="content-img-align-center">
class="center-image-wrapper"> 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 像素 的高度。
  • 寬度: RangeColumn.Width = 23.255 將對應 1 像素

常見問題解答

如何使用C#在Excel中自動調整列的大小?

您可以在IronXL中利用AutoSizeRow方法,根據Excel表中的內容自動調整列的高度。

在Excel表中自動調整欄大小的方法是什麼?

IronXL提供AutoSizeColumn方法,允許根據內容自動調整欄的寬度。

如何確保Excel中的合併單元格正確調整大小?

IronXL支援使用AutoSizeRowAutoSizeColumn方法中的Boolean參數,在調整大小時考慮合併單元格。

IronXL相較於Excel的本地自動調整功能有什麼優勢?

IronXL提供精確的單元格尺寸控制,而不會有Excel本地自動調整功能加入的填充,允許更精確的單元格尺寸設定。

是否可以在C#中操作Excel文件而不使用Microsoft Office Interop?

是的,IronXL允許您直接在C#中操作Excel文件,而不依賴Microsoft Office Interop,使其更加高效且易於使用。

如何使用C#在Excel文件中手動設置列和欄的大小?

您可以通過在IronXL中調整RangeRowRangeColumnHeightWidth屬性來手動設置列和欄的高度和寬度。

IronXL在設置列高度和欄寬度時使用什麼單位?

IronXL使用Excel的默認測量單位,其中高度為1/20點,寬度由“Normal”樣式中的字體可以容納的'0'數量決定。

IronXL可以自動化調整Excel表格的大小嗎?

是的,IronXL可以自動調整列和欄的大小,通過減少手動調整需求來提高生產力。

是否有資源可供學習如何使用C#調整Excel列和欄的大小?

是的,IronXL提供了關於調整列和欄大小的視頻教程,可在YouTube上找到,以幫助開發人員學習如何使用這些功能。

為什麼自動調整對Excel電子表格很重要?

自動調整對提高Excel電子表格的可讀性和美學非常重要,確保所有內容可見且呈現整齊無需手動干預。

Chaknith Bin
軟體工程師
Chaknith 在 IronXL 和 IronBarcode 上工作。他對 C# 和 .NET 擁有深厚的專業知識,幫助改進了軟體並支持客戶。他從用戶互動中得到的見解有助於改善產品、文檔和整體體驗。
準備好開始了嗎?
Nuget 下載 1,686,155 | 版本: 2025.11 剛剛發布