如何使用ClosedXml在公式单元格中对Excel文本进行换行
问题在于,当单元格包含引用具有某些长字符串的单元格的公式时,单元格内容未被换行。如何使用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();
。但是这也不起作用(既不调整某些列的内容)。
对不起,我还是不能写评论... 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属性不兼容。
我用这个
xlWorkSheet.Range["A4:A4"].Cells.WrapText = true;
'ClosedXML'没有这种'Range'索引器。你有没有发布'EPPlus'代码? – 2017-09-26 08:33:33
代替将调整目录,你可以应用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;
说明,对同样的Codeplex上页上,库状态作者:
这一次花了一段时间来弄清楚。
当您在指向另一个单元格的单元格上设置换行文本时,Excel实际上是作弊。它计算所需的高度,然后设置行高度属性。这是我在这里无法做到的事情。
你必须不做。
对我来说这意味着这个功能是不可能的。
试试'worksheet.Cell(“A3”)。WrapText = True'后面加'worksheet.Row(3).EntireRow.AutoFit' – 2013-03-04 13:58:01
@PeterAlbert我想这个值得回答! – 2013-03-04 17:11:25
@PeterL。不,这不是 – horgh 2013-03-05 00:08:52