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

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

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

調整電子表格中的行和列的大小可以節省大量空間,並使其更易於閱讀。 IronXL C# 庫提供了自動調整行和列大小的功能。 由於它是用 C# 實現的,因此可以對所有現有行和列呼叫調整大小的方法,從而自動執行電子表格中的手動任務。

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

使用 IronXL,您只需一行程式碼即可調整任何行或列的大小——無需互通,輕鬆便捷。 使用WorkSheet.AutoSizeColumn(int, bool)WorkSheet.AutoSizeRow(int, bool)可以根據儲存格內容(合併儲存格可選)立即調整尺寸。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronXL

    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方法會根據指定行的內容自動調整指定行的高度。

: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

示範

自動調整行大小

自動調整列寬範例

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

示範

自動調整列寬

所有行和列索引位置均採用從零開始的索引方式。


進階自動調整行大小範例

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 像素除以 3 ,從而使每行的高度為 64 像素。 請記住, AutoSizeRow方法需要單獨套用於每一行。

自動調整行大小

如果該值設為 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
自動調整行大小

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方法需要分別套用於每一列。

進階自動調整列寬

如果該值設為 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
進階自動調整列寬

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

Excel 和 IronXL 自動調整大小的差異

Excel 的自動調整行高功能會在儲存格的頂部和底部新增明顯的邊距。

Excel 和 IronXL 自動調整行大小的比較

Excel 的自動調整列寬功能也會為儲存格增加左右邊距,但不太明顯。

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 pixel的高度。
  • 寬度: 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,738,553 | Version: 2025.11 剛發表