2013-03-04 324 views
7

問題は、セルに長い文字列のあるセルを参照する数式が含まれていると、セルの内容が折り返されないことです。私はまた、行の高さを設定しようとClosedXmlを使用して数式セルにExcelの折り返しテキストを作成する方法

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; 

CodePlexに私は問題を確認するために、この問題と単純なコードでスレッドを発見しましたしかし、いずれも成功しない。

私はこれについて何かできることはありますか?ピーター・アルバートによってコメントに続き


、私はセットの行のAutoFit作ってみました。 ClosedXMLでこれを行うために私が見つけた唯一の事はworkSheet.Row(3).AdjustToContent();です。しかし、これはどちらも機能しませんでした(特定の列の内容を調整することもありません)。

+1

WrapText = True'の後に 'worksheet.Row(3).EntireRow.AutoFit'を付けてみてください –

+0

@PeterAlbertこれは答えに値すると思います! –

+0

@ PeterL。いいえではない – horgh

答えて

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プロパティと互換性がありません。

5

は、私が代わりに目次に調整して適用するこの

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

'ClosedXML'はこのタイプの' Range'インデクサを持っていません。おそらく 'EPPlus'コードを投稿しましたか? –

5

を使用するには、この

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; 

ようWraptextを適用することができますし、適用したい場合は、両方がAdjustToContents後にそれを使用しています。また、そのことは非常に同じCodePlexにページ上

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

注、ライブラリの状態の著者:

この1つは把握する時間がかかりました。

Excelは、別のセルを指すセルに折り返しテキストを設定すると、実際に不正行為をしています。必要な高さを計算し、行の高さのプロパティを設定します。これは私がここではできないものです。

あなたはしなければなりません。

これは、この機能が不可能であることを示しています。

関連する問題