簡體   English   中英

如何使用ClosedXml使Excel在公式單元格中自動換行

[英]How to make Excel wrap text in formula cell with 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");

我也嘗試手動設置行高,而不是包裝單元格:

workSheet.Row(3).Height = workSheet.Row(1).Height;

但是也沒有成功。

有什么我可以做的嗎?


根據Peter Albert的評論,我嘗試將set AutoFit設置為AutoFit 我設法在ClosedXML中找到的唯一方法是workSheet.Row(3).AdjustToContent(); 但這也不起作用(都不能調整某些列的內容)。

您可以像這樣應用Wraptext,而不是將Adjust應用於內容

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,在我的版本(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屬性不兼容。

還要注意,在同一Codeplex頁面上,庫的作者指出:

這花了一段時間才弄清楚。

當您在指向另一個單元格的單元格上設置換行文本時,Excel實際上是在作弊。 它計算所需的高度,然后設置行高屬性。 這是我在這里不能做的事情。

您將必須沒有。

對我來說,這意味着該功能是不可能的。

SetWrapText(); 為我工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM