2013-03-04 203 views
7

問題在於,當單元格包含引用具有某些長字符串的單元格的公式時,單元格內容未被換行。如何使用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();。但是這也不起作用(既不調整某些列的內容)。

+1

試試'worksheet.Cell(「A3」)。WrapText = True'後面加'worksheet.Row(3).EntireRow.AutoFit' – 2013-03-04 13:58:01

+0

@PeterAlbert我想這個值得回答! – 2013-03-04 17:11:25

+0

@PeterL。不,這不是 – horgh 2013-03-05 00:08:52

回答

0

對不起,我還是不能寫評論... 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屬性不兼容。

5

我用這個

xlWorkSheet.Range["A4:A4"].Cells.WrapText = true; 
+0

'ClosedXML'沒有這種'Range'索引器。你有沒有發佈'EPPlus'代碼? – 2017-09-26 08:33:33

5

代替將調整目錄,你可以應用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; 
0

說明,對同樣的Codeplex上頁上,庫狀態作者:

這一次花了一段時間來弄清楚。

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

你必須不做。

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

相關問題