如何自動調整行和列的大小

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

查克尼思·賓

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

C# NuGet 程式庫用于 Excel

安裝與 NuGet

Install-Package IronXL.Excel
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

C# NuGet 程式庫用于 Excel

安裝與 NuGet

Install-Package IronXL.Excel
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

立即開始在您的專案中使用IronPDF,並享受免費試用。

第一步:
green arrow pointer

查看 IronXLNuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變Excel。

C# NuGet 程式庫用于 Excel nuget.org/packages/IronXL.Excel/
Install-Package IronXL.Excel

請考慮安裝 IronXL DLL 直接下載並手動安裝到您的專案或GAC表單: IronXL.zip

手動安裝到您的項目中

下載DLL

自動調整列範例

AutoSizeRow 方法會自動調整指定列的高度(s) 基於其內容。

: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")
VB   C#

演示

自動調整列大小

自動調整列寬範例

使用 AutoSizeColumn 方法來調整列的寬度。(s) 根據其內容長度。

: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")
VB   C#

演示

自動調整列寬

提示
所有行和列的索引位置都遵循從零開始的索引。


進階自動調整列高度範例

另一個 AutoSizeRow 方法的多載函式接受第二個參數作為 Boolean 值。當設為 true 時,合併儲存格的高度也會被考慮,方法是取合併區域中左上角儲存格的高度值,並將其除以合併區域中的列數。此條件適用於合併儲存格的內容高度相對於合併區域中其他列的高度最高的情況。

: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")
VB   C#

範例

例如,假設內容的高度為 192 像素,並位於跨越 3 行 的合併區域中。當對任何這些行應用自動調整大小時,算法將內容的高度 192 像素除以 3,得到每行的高度為 64 像素。請記住,AutoSizeRow 方法需要單獨應用於每一行。

進階自動調整列高

如果將值設置為false會怎樣?

當值設置為false時,AutoSizeRow方法會根據最高的單元格的內容調整行高。在Microsoft Excel中,當合併一範圍的單元格時,它僅保留左上角單元格的值,並清除其餘部分。然而,在IronXL中, 合併 操作將在不擦除合併區域內其他單元格的值情況下執行。

: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)
VB   C#
進階自動調整列高

為了示範目的,我手動調整了行高,而不是使用 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")
VB   C#

示例

例如,如果內容的寬度為117 像素且位於涵蓋2 列的合併區域中,對這些列中的任何一列應用自動調整大小將導致每列的寬度為 59 像素。需要對每列單獨應用 AutoSizeColumn 方法。

高級自動調整列寬

如果值設定為 false 會如何?

當值設定為 false 時,AutoSizeColumn 方法會根據單元格中內容最長的寬度來調整寬度。在 Microsoft Excel 中,當一個範圍的單元格合併時,它只保留左上角的值並擦除其他部分。然而,IronXL 合併 方法不會清除合併區域中其他儲存格的值。

: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)
VB   C#
高級自動調整列寬

合併儲存格的寬度未被優先考慮,導致寬度沒有變化,因為每個列的寬度是根據其內容寬度計算的。

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
VB   C#

Excel 中的高度和寬度單位

Excel 中的高度和寬度測量單位是不同的。具體而言,高度以 1/20 點為單位測量,而寬度則根據在使用「標準」樣式指定的字體下,可以放入單元格中的「0」的數量來確定。

為了簡化單位轉換,可以在 IronXL 中設置對應於 Microsoft Excel 顯示像素的值。需要注意的是,像素並不代表螢幕上的物理點;相反,它被定義為 1/96 英寸,無論螢幕的實際解析度如何。Excel 本身設計為與解析度無關,不依賴物理像素。

為了建立 IronXL 與 Excel 高度和寬度測量之間的關係,可以參考以下近似值:

  • 高度:RangeRow.Height = 10 將導致約 1 像素 的高度。
  • 寬度:RangeColumn.Width = 23.255 對應於 1 像素

查克尼思·賓

軟體工程師

Chaknith 是開發者界的夏洛克福爾摩斯。他第一次意識到自己可能有個軟體工程的未來,是在他為了娛樂而參加程式挑戰的時候。他的重點是 IronXL 和 IronBarcode,但他也引以為豪的是,他幫助客戶解決所有產品的問題。Chaknith 利用他與客戶直接對話中獲得的知識,以進一步改進產品。他的實際反饋超越了 Jira 工單,並支持產品開發、文件撰寫和行銷,以提升客戶的整體體驗。不在公司時,他通常在學習機器學習、寫程式和徒步旅行。