如何在 Excel 中自動調整列與行的大小 | IronXL

如何在 C# 中自動調整 Excel 行和列的大小</#35;

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。

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronXL.Excel

    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 方法會根據指定行中的內容,自動調整其高度。 此功能可確保單元格中的所有文字都是可見的,防止截斷並提高可讀性。 當處理沒有 Interop 的 Excel 檔案時,IronXl.Excel 會根據字型大小、單元格內容和格式屬性計算最佳的行高。

: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.Excel 的自動調整大小功能整合了儲存格邊界與對齊方式等功能,以建立專業的試算表。

結果是什麼樣子?

自動調整大小前後的 Excel 試算表:截短文字的窄欄與顯示完整內容的適當大小欄的對比

提示所有行和列索引位置都是零索引。


如何使用合併儲存格處理進階的行大小調整?

AutoSizeRow 方法的另一個重載版本會接受第二個布林參數。 此參數可讓您在調整大小時考慮合併的儲存格。 在 Excel 中使用 疊合儲存格時,由於內容跨越多個儲存格,因此自動調整大小的行為變得更加複雜。

: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 方法會根據內容最多的儲存格來調整列高。 在 Microsoft Excel 中,合併儲存格時僅會保留左上角的數值,並清除其餘內容。然而,IronXL 的 Merge 運算式能保留合併區域內其他儲存格的數值,為複雜的試算表提供更大的靈活性。

: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 自動調整行列大小的功能改善了試算表單元格中文字的可視性

為了示範目的,我手動調整了行高,而非使用 Excel 自動調整行高功能,以避免增加明顯的上下襯墊。

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

合併儲存格寬度計算如何運作?

如果在跨 2 列的合併區域中,內容的寬度為 117 像素,則對任何一列套用自動調整大小功能的結果是每列 59 像素。 必須對每一欄分別套用 AutoSizeColumn 方法。 此比例分佈可確保合併後的內容能在合併區域的所有欄位中正確顯示。

Excel 列自動調整大小之前與之後的比較,顯示列 B 的寬度從 117 像素縮小到 59 像素

如果該值設為 false 會怎樣?

當設定為 false 時,AutoSizeColumn 方法會根據內容最長的儲存格來調整寬度。 在 Microsoft Excel 中,合併儲存格時僅會保留左上角的數值,並刪除其餘內容。然而,IronXL 的 Merge 方法能保留合併區域內其他儲存格的數值,讓開發人員能更靈活地掌控資料。

: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.Excel 自動調整大小有何差異?

瞭解 Excel 原生自動套用功能與 IronXl.Excel 實作之間的差異,有助於開發人員在自動化試算表作業時做出明智的決策。 在保持跨平台一致性或需要精確控制單元尺寸時,這些差異很重要。

行如何區分?

Excel 的自動適配行高功能會為儲存格套用明顯的上下填充。 IronXL 可精確控制行高,精確計算內容所需的空間,而無需額外的填充。 在處理密集的資料或需要精確的列印佈局時,這種差異非常顯著。

Excel 與 IronXl.Excel 自動調整大小的比較,顯示相同測試資料的不同行處理方式

欄位如何區分?

Excel 的自動適配列寬功能會在儲存格上套用左右填充,但不太顯著。 IronXl.Excel 著重於精確的內容寬度,在使用 自動化報表系統時非常有利,因為在此系統中空間最佳化至關重要。

Excel 與 IronXl.Excel 欄位自動調整大小比較,顯示相同內容的不同寬度測量結果

如何手動調整高度和寬度?

除了使用 AutoSizeRowAutoSizeColumn 方法自動計算和調整尺寸外,您也可以手動調整欄位和列的寬度與高度,以滿足特定需求。 在執行標準化的報告格式或使用需要特定尺寸的範本時,手動調整尺寸非常有用。

  • 調整高度:設定 HeightRangeRow 屬性
  • 調整寬度:設定 WidthRangeColumn 屬性
: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"字元數量來決定。 在使用 IronXL's API 時,瞭解這些轉換對於精確的佈局而言至關重要。

為了簡化單位轉換,請在 Microsoft Excel 中將 IronXL 值解釋為顯示像素。 像素的定義為 1/96 英吋,不論螢幕解析度為何。 Excel 與解析度無關,不依賴實體像素。

IronXL 與 Excel 高度和寬度測量的關係:

  • 高度:RangeRow.Height = 10 會產生約 1 pixel 的結果
  • 寬度:RangeColumn.Width = 23.255 對應 1 像素

對於需要精確試算表版面控制的開發人員而言,這些轉換係數能夠進行精確的尺寸計算。 結合其他格式化功能,手動調整大小可完全控制 Excel 文件的外觀。 在生產中部署使用這些功能的應用程式時,請記得套用 您的授權金鑰

常見問題

如何在 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 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 2,052,917 | 版本: 2026.6 just released
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package IronXL.Excel
執行範例 觀看您的資料變成試算表。