EPPlusの自動列幅


139

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

このコードを使用します

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

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

それを機能させる方法はありますか?

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


2
Worksheet.cells.AutoFitColumns(); は機能しますが、すべてのデータをフォーマットして印刷した直後に追加する必要があります。
Suresh Kamrushi

回答:


250

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

VB.NET

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

C#

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

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


9
ここで重要なのは、ワークシートにデータがない場合、Worksheet.Dimensionプロパティはnullを返すため、ワークシートに入力した後でこのメソッドを呼び出す必要があることです。
Landeeyo 2015年

@Landeeyoありがとうございます。コンテンツを埋めた後に幅を設定することが重要です。
ランカ

3
AutoFitColumnsメソッドは、パラメーターを指定していない場合は機能しませんでした。最小幅と最大幅を追加すると、完全に機能します。
Zeeshan Ajmal 2015

4
これは完全に正しい答えです-Panganはそれをそのようにマークする必要があります。
GDB、2015年

セルを計算した場合は、Worksheet.Calculate()最初に呼び出して、それらのセルの値を決定できるようにする必要があります。
MikeH

38

EPPlusのバージョン3.1.3.0でこのコードを使用しましたが、機能しています。

worksheet.Column(1).AutoFit();

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

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


一日中エラーが発生します。「このプラットフォームではSystem.Drawingはサポートされていません。」
Kursat Turkay 2018年

15

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

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

11

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

worksheet.Cells.AutoFitColumns()

1
これでうまくいきました。データを追加した後は、必ず呼び出してください。データが追加される前に呼び出したところ、何も起こりませんでした。
mortb

10

少し遅れていることはわかっていますが、今日も同じ問題がありました。worksheet.DefaultColWidth定義済みの場合、機能しません。その行を削除して追加しましたがWorksheet.cells.AutoFitColumns();、現在は機能しています。


5
sheet.Cells.AutoFitColumns()先端をありがとう!ClosedXmlでは、次のようにしますsheet.Columns().AdjustToContents()
nawfal

6

私には問題なく動いています。

試してください:

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

3

worksheet.Column(1).AutoFit(0);AutoFit()を使用しなければならなかったので、うまくいきませんでした。


3

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

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

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


epplus.codeplex.com/discussions/218294?ProjectName=epplusこの問題の解決策が見つかりません。
Pengan 2013年

3

.NETの後継としての.NET Coreは、EPPplusライブラリでセルを自動調整する機能をサポートしなくなりました。

worksheet.Cells.AutoFitColumns();

または

worksheet.Column(1).AutoFit();

例外が発生します:

"System.Drawing is not supported on this platform."

System.Drawingアセンブリは、別のソリューションで置き換える必要があるGDIおよびWindows固有のライブラリに依存しています。この問題の解決策は不明です。


1

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

Dim objExcel As New ExcelPackage
Dim Sheet As ExcelWorksheet = objExcel.Workbook.Worksheets.Add("SheetName")
Sheet.Cells("B1:BN").AutoFitColumns()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.