如何使用ClosedXml使公式单元格中的Excel换行文本

hor*_*rgh 8 c# excel closedxml

问题是,当该单元格包含引用具有一些长字符串的单元格的公式时,单元格内容不会被包装.

CodePlex上我发现了一个关于这个问题的线程和一个简单的代码来查看问题:

var generated = new XLWorkbook();
var workSheet = generated.AddWorksheet("Test");
workSheet.Cell("B1").Style.Alignment.WrapText = true;
workSheet.Cell("B1").Value = "hello hello hello hello hello";
workSheet.Cell("A3").FormulaA1 = "B1";
workSheet.Cell("A3").Style.Alignment.WrapText = true;
generated.SaveAs("Generated.xlsx");
Run Code Online (Sandbox Code Playgroud)

我还尝试手动设置行高而不是包裹单元格:

workSheet.Row(3).Height = workSheet.Row(1).Height;
Run Code Online (Sandbox Code Playgroud)

但是也没有成功.

我能做些什么吗?


在Peter Albert的评论之后,我试着制作了一排AutoFit.我在ClosedXML中唯一能找到的就是workSheet.Row(3).AdjustToContent();.但这也不起作用(既不调整某列的内容).

Smi*_*tel 12

您可以像这样应用Wraptext,而不是应用Adjust to Contents

var generated = new XLWorkbook();
var workSheet = generated.AddWorksheet("Test");
worksheet.Cell(3, 2).Value = "Hello Hello Hello Hello Hello Hello Name";    
worksheet.Cell(3, 2).Style.Alignment.WrapText = true;
Run Code Online (Sandbox Code Playgroud)

如果你想同时使用它,请在AdjustToContents之后使用它.

var generated = new XLWorkbook();
var workSheet = generated.AddWorksheet("Test");
worksheet.Columns(2, 20).AdjustToContents();    
worksheet.Cell(3, 2).Value = "Hello Hello Hello Hello Hello Hello Name";
worksheet.Cell(3, 2).Style.Alignment.WrapText = true;
Run Code Online (Sandbox Code Playgroud)

  • 为什么在AdjustToContents之后WrapText? (2认同)

Moa*_*yro 8

我用这个

 xlWorkSheet.Range["A4:A4"].Cells.WrapText = true;
Run Code Online (Sandbox Code Playgroud)


bub*_*ubi 0

抱歉,我还不能写评论... AutoFit 不是 ClosedXML 的属性。关于AdjustToContents,在我的版本(26/07/2014,我认为0.72.3)中忽略WordWrap属性(分割长行)。这是主要检查

            if (c.HasRichText || textRotation != 0 || c.InnerText.Contains(Environment.NewLine))
            {
               // omissis...
            }
            else
                thisHeight = c.Style.Font.GetHeight( fontCache);
Run Code Online (Sandbox Code Playgroud)

如果单元格由于自动换行而超过一行,则此实现会忽略确切的高度。因此,AdjustToContents + AutoWrap 不起作用。如果您需要具有内容大小的高度,则需要避免调用AdjustToContents。此行为与 XL IsAutoHeight 属性不兼容。