如何自动调整行和列的大小

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

查克尼特·宾

调整电子表格中行和列的大小可以节省大量空间,并使其更具可读性。IronXL# C# 库提供了自动调整行和列大小的功能。由于是在 C# 中完成的,因此可以调用所有现有行和列的大小调整方法,从而将电子表格中的手动任务自动化。

适用于Excel的C# NuGet库

安装使用 NuGet

Install-Package IronXL.Excel
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于Excel的C# NuGet库

安装使用 NuGet

Install-Package IronXL.Excel
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

开始在您的项目中使用IronPDF,并立即获取免费试用。

第一步:
green arrow pointer

查看 IronXLNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变Excel。

适用于Excel的C# NuGet库 nuget.org/packages/IronXL.Excel/
Install-Package IronXL.Excel

考虑安装 IronXL DLL 直接。下载并手动安装到您的项目或GAC表单中: IronXL.zip

手动安装到你的项目中

下载DLL

自动调整行大小示例

自动调整行大小 "方法会自动调整指定行的高度(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#

演示

自动调整列大小

提示
所有行和列的索引位置都采用基于零的索引方式。


高级自动调整行大小示例

自动调整行大小 "方法的另一个重载将第二个参数设置为布尔值。当设置为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 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)
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 Aute 调整行大小的比较

Excel 自动调整列宽功能也会对单元格应用左右填充,但不太明显。

Excel 和 IronXL Aute 调整列大小的比较

手动调整高度和宽度示例

除了依靠 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 票据,还支持产品开发、文档编写和市场营销,从而提升客户的整体体验。当他不在办公室时,他可能会在学习机器学习、编程或徒步旅行。