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

Chaknith related to 如何自動調整行和列的大小
查克尼思·賓
2023年3月26日
已更新 2024年12月10日
分享:
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 方法會根據內容自動調整指定行的高度。

: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方法的另一個重載將第二個參數作為布林值。 當設置為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")
$vbLabelText   $csharpLabel

範例

例如,假設內容的高度為192 像素,且位於跨越3 行的合併區域中。 當將自動調整大小應用於這些行時,算法會將內容的高度192 px 除以 3,從而使每行的高度為 64 px。 請記得需要分別對每一行單獨應用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)
$vbLabelText   $csharpLabel
進階自動調整列高

為了演示目的,我手動調整了行高,而不是使用 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

範例

例如,如果內容的寬度為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)
$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測量,而寬度則根據可以在使用“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 工單,並支持產品開發、文件撰寫和行銷,以提升客戶的整體體驗。不在公司時,他通常在學習機器學習、寫程式和徒步旅行。