web-dev-qa-db-ja.com

EPPlusの自動列幅

列内のテキストが長いときに列を自動幅にする方法は?

私はこのコードを使用します

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

これらの方法はどれも機能していません

動作させる方法はありますか?

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

121
Pengan

AutoFitColumnsを使用しますが、セルを指定する必要があります。ワークシート全体を想定しています。

VB.NET

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

C#

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

ワークシートに記入した後にこのメソッドを呼び出す必要があることに注意してください。

223
Tim Schmelter

EPPlusのバージョン3.1.3.0でこのコードを使用しましたが、動作しています:

worksheet.Column(1).AutoFit();

ここで、worksheetは、コードで作成したワークシートを参照する変数です(静的メソッドを持つクラスではありません!)。

明らかに、列を埋めた後にこのメソッドを呼び出すにする必要があります。

38

これは古い質問ですが、以下のコードを使用すると、あなたがしようとしたことを直接解決できるようです。

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();
}
15
TrailTrackers

少し遅れていますが、今日も同じ問題を抱えています。 worksheet.DefaultColWidthdefinedがある場合、機能しません。その行を削除し、Worksheet.cells.AutoFitColumns();を追加しましたが、現在は機能しています。

10
Jose

範囲を指定せずにセルを合わせることができることを指摘したいだけで、すべての列をフォーマットした後にこれを呼び出すようにしてください:

worksheet.Cells.AutoFitColumns()
8
johnny 5

それは私にとってはうまく機能しています。

試してください:

ExcelWorksheet wsSheet1 = ExcelPkg.Workbook.Worksheets.Add("Sheet1");
wsSheet1.Cells[wsSheet1.Dimension.Address].AutoFitColumns();
ExcelPkg.SaveAs();
5
leiit

幅を計算する必要があります。ライブラリには、意図したとおりに機能する自動サイズ変更機能はありません。

Autofitcolumnは、ラップされたテキストや数式を含むセルでは機能しません。

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

3
ffffff01

worksheet.Column(1).AutoFit(0); AutoFit()を使用する必要がありましたが、トリックを実行していませんでした。

2
xtds

私はこれを使用し、うまく機能しています。

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