2013-03-04 210 views
7

问题在于,当单元格包含引用具有某些长字符串的单元格的公式时,单元格内容未被换行。如何使用ClosedXml在公式单元格中对Excel文本进行换行

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; 

但是也没有成功。

我能做些什么吗?


继彼得·艾伯特的评论,我试图让组行的AutoFit。我设法在ClosedXML中完成的唯一工作是workSheet.Row(3).AdjustToContent();。但是这也不起作用(既不调整某些列的内容)。

+1

试试'worksheet.Cell(“A3”)。WrapText = True'后面加'worksheet.Row(3).EntireRow.AutoFit' – 2013-03-04 13:58:01

+0

@PeterAlbert我想这个值得回答! – 2013-03-04 17:11:25

+0

@PeterL。不,这不是 – horgh 2013-03-05 00:08:52

回答

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); 

这实现忽略的确切高度时的电池是因为autowrap的多行。所以,AdjustToContents + AutoWrap不起作用。如果您需要获得内容大小的高度,则需要避免调用AdjustToContents。 此行为与XL IsAutoHeight属性不兼容。

5

我用这个

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

'ClosedXML'没有这种'Range'索引器。你有没有发布'EPPlus'代码? – 2017-09-26 08:33:33

5

代替将调整目录,你可以应用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; 
0

说明,对同样的Codeplex上页上,库状态作者:

这一次花了一段时间来弄清楚。

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

你必须不做。

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

相关问题