问题是,当该单元格包含引用具有一些长字符串的单元格的公式时,单元格内容未被包装。
在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();
。但这也不起作用(既不调整某一列的内容)。
答案 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":{
},
为我工作