如何使用ClosedXml使Excel在公式单元格中换行文本
本文关键字:单元格 换行 文本 何使用 ClosedXml Excel | 更新日期: 2023-09-27 18:02:09
问题是单元格的内容没有被包装,当该单元格包含一个公式引用一个长字符串的单元格。
在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();
。但这也不工作(既不调整某些列的内容)。
不应用内容调整,您可以像这样应用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;
我用这个
xlWorkSheet.Range["A4:A4"].Cells.WrapText = true;
对不起,我仍然不能写注释…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);
由于自动捕获,如果单元格超过一行,则忽略确切的高度。所以,AdjustToContents + AutoWrap不起作用。如果你需要内容的大小的高度,你需要避免调用AdjustToContents。此行为与XL IsAutoHeight属性不兼容。
还请注意,在同一个Codeplex页面上,库的作者声明:
我花了一点时间才弄明白。
当你在指向另一个单元格的单元格上设置换行文本时,Excel实际上是作弊的。它计算所需的高度,然后设置行高度属性。这是我不能在这里做的事情。你将不得不没有。
对我来说,这意味着这个功能是不可能的。
SetWrapText();
为我工作
找到以下解决方案(仅限excel):
-
我将
row.Cells("start cell : end cell").Style.Alignment.SetWrapText(true)
设置为所有使用的单元格 -
我写了一个VBA宏与以下文本:
Range("A" & Row & ":N" & Row).EntireRow.AutoFit
(For Row)Range("A" & Row & ":N" & Row).EntireColumn.AutoFit
(For Column) -
指定在文档启动时运行