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

时间:2013-03-04 09:38:55

标签: 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");

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

workSheet.Row(3).Height = workSheet.Row(1).Height;

然而也没有成功。

我能做些什么吗?


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

5 个答案:

答案 0 :(得分:8)

我用这个

 xlWorkSheet.Range["A4:A4"].Cells.WrapText = true;

答案 1 :(得分:8)

您可以像这样应用Wraptext

,而不是应用“调整到内容”
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;

如果你想同时使用它,请在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;

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

另请注意,在同一个Codeplex页面上,库的作者声明:

  

这个花了一段时间才弄明白。

     

当您在指向另一个的单元格上设置换行文本时,Excel实际上是在作弊。它计算所需的高度,然后设置行高属性。这是我在这里无法做到的。

     

你将不得不这样做。

对我来说这意味着这个功能是不可能的。

答案 4 :(得分:0)

"FormVariables":{ }, "ActionParameters":{ }, 为我工作