2013-03-26 194 views
85

列内のテキストが長い場合、自動幅にする方法はありますか?EPPlusの自動列幅

私はこのコード

Worksheet.Column(colIndex).AutoFitColumn() 'on all columns' 
Worksheet.cells.AutoFitColumns() 
Worksheet.Column(colIndex).BestFit = True 'on all columns' 

を使用するこれらの方法のいずれも

それを動作させるための任意の方法がありますが機能していませんか?

注:一部のテキストでは、Unicodeを使用しています。

答えて

162

使用AutoFitColumnsができますが、セルを指定する必要があり、私は、ワークシート全体前提としています

VB.NET

Worksheet.Cells(Worksheet.Dimension.Address).AutoFitColumns() 

C#

Worksheet.Cells[Worksheet.Dimension.Address].AutoFitColumns(); 

をあなたが呼び出す必要がありますのでご注意くださいこのメソッドは、ワークシートを塗りつぶした後に行います。

+1

これは機能しません。 – Pengan

+0

これは動作します... ToStringは必要ありません – Beejee

+6

ワークシートにデータがない場合は、Worksheet.Dimensionプロパティがnullを返すので、重要なことはワークシートの塗りつぶし後にこのメソッドを呼び出す必要があることです。 – Landeeyo

3

幅を計算する必要があります。あなたが意図した通りに動作するライブラリに自動サイズ設定機能はありません。

自動書式のテキストとセルで自動書式列は機能しません。

問題を解決する方法の例は、http://epplus.codeplex.com/discussions/218294?ProjectName=epplusをご覧ください。

+0

http://epplus.codeplex.com/discussions/218294?ProjectName=epplus この問題の解決方法は見つかりません。 – Pengan

31

私はEPPlusのバージョン3.1.3.0でこのコードを使用して、それが働いている:

ワークシートには、静的で、私は自分のコードで作成したワークシート(ないクラスを参照する変数である
worksheet.Column(1).AutoFit(); 

方法!)。

明らかに、の欄に記入した後、を呼び出す必要があります。

+4

最後のステートメントを強調する必要があります:**カラムを埋めた後にこのメソッドを呼び出す** –

2

使用していたworksheet.Column(1).AutoFit(0); AutoFit()はこのトリックを行っていませんでした。

1

私はこれを使用しており、うまくいきます。

Dim objExcel As New ExcelPackage 
Dim Sheet As ExcelWorksheet = objExcel.Workbook.Worksheets.Add("SheetName") 
Sheet.Cells("B1:BN").AutoFitColumns() 
+0

あなたのコードのより詳細な説明を残すことはできますか? – Shawn

7

私は知っていますが、少し遅れていますが、今日は同じ問題がありました。 worksheet.DefaultColWidthが定義されていると、機能しません。私はその行を削除してWorksheet.cells.AutoFitColumns();を追加しました。

+3

'sheet.Cells.AutoFitColumns()'はより簡単です。 ClosedXmlでは、 'sheet.Columns()。AdjustToContents()'を実行します。 – nawfal

6

私はこれは古い質問だと知っていますが、私は以下のコードを使用しています。

using (var xls = new ExcelPackage()) 
{ 
    var ws = xls.Workbook.Worksheets.Add("Some Name"); 

    //**Add Column Names to worksheet!** 
    //**Add data to worksheet!** 

    const double minWidth = 0.00; 
    const double maxWidth = 50.00; 

    ws.Cells.AutoFitColumns(minWidth, maxWidth); 

    return pkg.GetAsByteArray(); 
} 
関連する問題