如何在Excel中自動調整列和欄 | IronXL

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

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

IronXL在 C# 中提供自動行和列調整大小功能,其方法如 AutoSizeRow()AutoSizeColumn() 可根據單元格內容調整尺寸,從而消除手動電子表格格式設定並支援合併單元格計算。 此功能透過動態調整儲存格尺寸以適應其內容,實現 Excel 工作流程的自動化,從而確保無需人工幹預即可產生專業的電子表格。

快速入門:透過一次呼叫自動調整列或行的大小

使用IronXL,您可以在一行中調整任意行或列的大小。使用 WorkSheet.AutoSizeColumn(int, bool)WorkSheet.AutoSizeRow(int, bool) 可根據儲存格內容(可選合併儲存格)調整尺寸。 這種方法適用於所有.NET平台,無需安裝 Excel。

  1. 使用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 方法可依指定行的內容自動調整其高度。 此功能可確保儲存格內的所有文字均可見,防止文字被截斷,提高可讀性。 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");
$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");
$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");
$vbLabelText   $csharpLabel

合併單元格計算是如何進行的?

如果內容的高度為192 像素,且位於跨越3 行的合併區域中,當對其中任何一行套用自動調整大小時,演算法會將 192 像素除以 3,因此每行得到 64 像素。 需要對每一行單獨應用 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);
$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");
$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);
$vbLabelText   $csharpLabel
Excel 自動調整列寬前後對比圖,展示了針對文字資料最佳化的列寬調整效果

合併單元格的寬度沒有優先考慮,因此沒有寬度變化,因為每一列的寬度都是根據其內容寬度計算的。

Excel 和IronXL自動調整大小功能有什麼不同?

了解 Excel 的原生自動調整功能與 IronXL 的實現方式之間的差異,有助於開發人員在自動化電子表格操作時做出明智的決策。 在保持跨平台一致性或需要精確控制單元格尺寸時,這些差異至關重要。

行之間有何不同?

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 方法自動計算和調整尺寸外,您還可以手動調整列和行的寬度和高度以滿足特定要求。 手動調整尺寸在實施標準化報表格式或使用需要特定尺寸的範本時非常有用。

  • 調整高度:設定 Height 屬性 RangeRow
  • 調整寬度:設定 Width 屬性 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");
$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 pixel
  • 寬度: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 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php
Line: 12
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 489
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php
Line: 19
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 489
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

準備好開始了嗎?
Nuget 下載 1,890,100 | 版本: 2026.3 剛剛發布

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php
Line: 17
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 71
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php
Line: 24
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 71
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

Still Scrolling Icon

還在捲動嗎?

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