C# 获取自动拟合后excel行的高度,然后将其增加到Epplus

C# 获取自动拟合后excel行的高度,然后将其增加到Epplus,c#,excel,epplus,C#,Excel,Epplus,我正在尝试在自动装配行之后增加行的高度。 例如:第一行高度为15 我通过以下方式自动调整它们: //The first row var start = sheet.Dimension.Start; //The last row var end = sheet.Dimension.End; for (int row = start.Row; row <= end

我正在尝试在自动装配行之后增加行的高度。 例如:第一行高度为15

我通过以下方式自动调整它们:

            //The first row
            var start = sheet.Dimension.Start;

           //The last row
           var end = sheet.Dimension.End;
        
          for (int row = start.Row; row <= end.Row; row++)
          {
            //This makes Excel auto fit the row but content
            sheet.Row(row).CustomHeight = true;               
          }
问题是Excel在打开Excel文件时自动拟合,因此EPPlus不会获取更新的行高信息,而是旧信息

因此,行高现在是18.75(15*1.25),而不是37.5(30*1.25)

您不能。正如您所说的“Excel在打开Excel文件时进行自动拟合”-因此,这是在EPPlus处理该文件很久之后。您所做的(也可以做的)就是告诉Excel相应地调整高度

(这与列不同:EPPlus可以执行
sheet.Column(Column).AutoFit();
并将宽度设置为适当的值-但不幸的是,行高不适用。也许这是在新的EPPlus商业版本中添加的?)

我认为你的选择是做一些实验,并尝试自己在ePlus中计算和设置高度

或者在Excel文件中运行VBA脚本来执行此任务-这没有问题,如下所示:

    With Sheets("Formular").Range(Cells(14, 1), Cells(14 + i - 1, 4))
        .EntireRow.AutoFit
        .VerticalAlignment = xlTop
        For Each r In .Rows
            r.RowHeight = r.Height + 5
        Next r
    End With
当然,当您的环境中不允许运行宏时,这可能不是您的选项

    With Sheets("Formular").Range(Cells(14, 1), Cells(14 + i - 1, 4))
        .EntireRow.AutoFit
        .VerticalAlignment = xlTop
        For Each r In .Rows
            r.RowHeight = r.Height + 5
        Next r
    End With