如何在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. 使用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大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備好開始了嗎?
Nuget 下載 2,134,203 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

仍在滾動嗎?

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