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

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

查克尼思·賓

調整試算表中的行和列的大小可以節省很多空間,並使其更具可讀性。 IronXL C# 函式庫提供了自動調整行和列大小的功能。 由於它是用C#完成的,因此可以為所有現有的行和列調用調整大小方法,從而自動化電子表格中的手動任務。

開始使用IronXL

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

第一步:
green arrow pointer


自動調整列大小範例

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 方法的重載版本需要第二個參數為一個 布林值。 當設定為時,合併單元格的高度也會被考慮,方法是取合併區域左上角單元格的高度值並除以合併區域中的行數。 當合併單元格的內容相對於合併區域中其餘行具有最高高度時,此條件適用。

: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呢?

當值設定為假時,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測量,而寬度則根據可以在使用“Normal”樣式指定的字體的單元格中容納的“0”的數量來確定。

為了簡化單位轉換,讓我們在 IronXL 中設定值,該值對應於 Microsoft Excel 中的顯示像素。 請注意,像素並不代表螢幕上的實體點; 相反,它被定義為1/96英寸,無論屏幕的實際分辨率如何。 Excel 本身是設計為解析度獨立的,不依賴於實體像素。

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

  • 高度:RangeRow.Height = 10 將導致大約高度為 1 像素
  • 寬度:RangeColumn.Width = 23.255 將對應到 1 像素
Chaknith related to Excel 中的高度和寬度單位

查克尼思·賓

軟體工程師

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