如何在 C# 中自動調整Excel試算表的行和列大小
IronXL在 C# 中提供建立Excel試算表時所需的自動行和列調整大小功能,其方法如 AutoSizeRow() 和 AutoSizeColumn() 可根據單元格內容調整尺寸,從而消除手動電子表格格式設定並支援合併單元格計算。 此功能透過動態調整儲存格尺寸以適應其內容,實現 Excel 工作流程的自動化,從而確保無需人工幹預即可產生專業的電子表格。
快速入門:透過一次呼叫自動調整列或行的大小
使用IronXL,您可以在一行中調整任意行或列的大小。使用 WorkSheet.AutoSizeColumn(int, bool) 或 WorkSheet.AutoSizeRow(int, bool) 可根據儲存格內容(可選合併儲存格)調整尺寸。 這種方法適用於所有.NET平台,無需安裝 Excel。
最簡工作流程(5個步驟)
- 下載 C# 庫,即可在 Excel 中自動調整行和列的大小。
- 導入所需的 Excel 文件
- 使用`AutoSizeRow`方法自動調整行大小
- 使用`AutoSizeColumn`方法可以根據列的內容寬度調整列寬。
- 根據您的需求設定高度和寬度值
如何自動調整行高?
AutoSizeRow 方法可依指定行的內容自動調整其高度。 此功能可確保儲存格內的所有文字均可見,防止文字被截斷,提高可讀性。 When working with Excel files without Interop, IronXL calculates optimal row height based on font size, cell content, and formatting attributes.
: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")
自動調整大小演算法會考慮字體度量、單元格內邊距和文字換行設置,以確定最佳高度。 對於從傳統 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")
處理財務資料或報告時,合適的列寬對於可讀性至關重要。 IronXL's auto-resize functionality integrates with features like cell borders and alignment to create professional spreadsheets.
結果如何?
所有行和列索引位置均採用從零開始的索引。
如何處理合併儲存格的進階行大小調整?
AutoSizeRow 方法的另一個重載版本接受第二個布林參數。 此參數可讓您在調整大小時考慮合併的儲存格。 When working with merged cells in Excel, auto-resize behavior becomes more complex as content spans multiple cells.
: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")
合併單元格計算是如何進行的?
如果內容的高度為192 像素,且位於跨越3 行的合併區域中,當對其中任何一行套用自動調整大小時,演算法會將 192 像素除以 3,因此每行得到 64 像素。 需要對每一行單獨應用 AutoSizeRow 方法。 此分佈方式可確保合併後的內容在合併區域的所有行中都能正確顯示。
如果該值設為 false 會怎樣?
設定為 false 時,AutoSizeRow 方法會根據內容最多的儲存格調整行高。 In Microsoft Excel, merging cells retains only the upper-left value and clears the rest. However, IronXL's Merge operation preserves values of other cells in the merged region, providing more flexibility with complex spreadsheets.
: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)
For demonstration purposes, I manually adjusted row height instead of using the Excel autofit row height function to avoid adding noticeable top and bottom padding.
如果將 useMergedCells 參數設為 false,則不考慮合併儲存格的高度。 每一行的高度都僅根據其內容計算。 這種方法可以保持行高一致,而不受合併區域的影響。
如何處理合併儲存格的進階列調整大小?
與 AutoSizeRow 類似,您可以使列調整大小考慮合併儲存格的寬度。 當設定為 true 時,如果合併儲存格的內容最長,則調整大小後的列寬等於合併儲存格的寬度除以合併區域中的列數。 This feature helps when creating spreadsheets with complex layouts.
: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")
合併單元格寬度計算是如何進行的?
如果合併區域跨越2 列,內容寬度為117 像素,則對任何列套用自動調整大小,每列的寬度將變為 59 像素。 必須對每一列分別應用 AutoSizeColumn 方法。 這種按比例分配確保合併後的內容在合併區域的所有欄位中正確顯示。
如果該值設為 false 會怎樣?
當設定為 false 時,AutoSizeColumn 方法會根據內容最長的儲存格調整寬度。 In Microsoft Excel, merging cells keeps only the upper-left value and erases the rest. However, IronXL's Merge method preserves values of other cells in the merged region, giving developers more control over their data.
: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)
合併單元格的寬度沒有優先考慮,因此沒有寬度變化,因為每一列的寬度都是根據其內容寬度計算的。
Excel 和IronXL自動調整大小功能有什麼不同?
了解 Excel 的原生自動調整功能與 IronXL 的實現方式之間的差異,有助於開發人員在自動化電子表格操作時做出明智的決策。 在保持跨平台一致性或需要精確控制單元格尺寸時,這些差異至關重要。
行之間有何不同?
Excel 的自動調整行高功能會為儲存格新增明顯的頂部和底部邊距。 IronXL可精確控制行高,計算內容所需的確切空間,而無需額外的填充。 當處理密集的資料或需要精確的列印佈局時,這種差異就顯得尤為重要。
列之間有何區別?
Excel 的自動調整列寬功能可為儲存格新增左右邊距,但效果較不明顯。 IronXL focuses on exact content width, beneficial when working with automated reporting systems where space optimization is crucial.
如何手動調整高度和寬度?
除了使用 AutoSizeRow 和 AutoSizeColumn 方法自動計算和調整尺寸外,您還可以手動調整列和行的寬度和高度以滿足特定要求。 手動調整尺寸在實施標準化報表格式或使用需要特定尺寸的範本時非常有用。
- 調整高度:設定
Height屬性RangeRow - 調整寬度:設定
Width屬性RangeColumn
: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")
Excel中高度和寬度的單位是什麼?
Excel中高度和寬度的測量單位不同。 高度以 1/20 磅為單位測量,寬度則根據使用 Normal 樣式中指定的字體在單元格中容納的"0"的數量來計算。 When working with IronXL's API, understanding these conversions is essential for precise layouts.
為了簡化單位換算,請將IronXL值解釋為 Microsoft Excel 中的顯示像素。 無論螢幕解析度如何,像素的定義都是 1/96 吋。 Excel 與解析度無關,不依賴實體像素。
IronXL和 Excel 的高度和寬度測量值之間的關係:
- 高度:
RangeRow.Height = 10結果約為1 pixel - 寬度:
RangeColumn.Width = 23.255對應1 像素
對於需要精確控制電子表格佈局的開發人員來說,這些轉換因子可以實現精確的尺寸計算。 結合其他格式設定功能,手動調整大小可以完全控制 Excel 文件的外觀。 Remember to apply your license key when deploying applications using these features in production.
常見問題解答
如何在 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 工作流程自動化。

