实际上,如果您查看行对象的属性CustomHeight
,您会发现它默认为false。这意味着Excel在打开时将自动设置行高度(应该如此)。如果您想停止这样做,您可以将其设置为false
或手动设置行高度,这将自动将其设置为false
。
唯一的问题是,如果您依赖行的自适应大小,则无法知道文件在EPPlus中构建时该高度将是多少,因为Excel会在打开文件时决定它。这有点像如果您使用AutoFitColumn
函数,那么您无法知道列宽度将是多少。
这演示了该属性的逻辑:
[TestMethod]
public void Row_Height_Test()
{
var datatable = new DataTable("tblData");
datatable.Columns.AddRange(new[]
{
new DataColumn("Col1", typeof (int)),
new DataColumn("Col2", typeof (int)),
new DataColumn("Col3", typeof (int))
});
for (var i = 0; i < 20; i++)
{
var row = datatable.NewRow();
row[0] = i;
row[1] = i * 10;
row[2] = i * 100;
datatable.Rows.Add(row);
}
var existingFile2 = new FileInfo(@"c:\temp\temp.xlsx");
if (existingFile2.Exists)
existingFile2.Delete();
using (var package = new ExcelPackage(existingFile2))
{
var ws = package.Workbook.Worksheets.Add("Sheet1");
ws.Cells.LoadFromDataTable(datatable, true);
ws.Row(1).Style.Font.Size = 20;
ws.Row(2).Height = 30;
ws.Row(2).Style.Font.Size = 20;
Console.WriteLine("{{{0} : {1}}}", ws.Row(1).Height, ws.Row(1).CustomHeight);
Console.WriteLine("{{{0} : {1}}}", ws.Row(2).Height, ws.Row(2).CustomHeight);
Console.WriteLine("{{{0} : {1}}}", ws.Row(3).Height, ws.Row(3).CustomHeight);
package.Save();
}
}
这是控制台日志输出:
{15 : False}
{30 : True}
{15 : False}