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)
抱歉,我还不能写评论... 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 属性不兼容。
归档时间: |
|
查看次数: |
33138 次 |
最近记录: |