列内のテキストが長いときに列を自動幅にする方法は?
私はこのコードを使用します
Worksheet.Column(colIndex).AutoFitColumn() 'on all columns'
Worksheet.cells.AutoFitColumns()
Worksheet.Column(colIndex).BestFit = True 'on all columns'
これらの方法はどれも機能していません
動作させる方法はありますか?
注:一部のテキストではUnicodeを使用しています。
AutoFitColumns
を使用しますが、セルを指定する必要があります。ワークシート全体を想定しています。
VB.NET
Worksheet.Cells(Worksheet.Dimension.Address).AutoFitColumns()
C#
Worksheet.Cells[Worksheet.Dimension.Address].AutoFitColumns();
ワークシートに記入した後にこのメソッドを呼び出す必要があることに注意してください。
EPPlusのバージョン3.1.3.0でこのコードを使用しましたが、動作しています:
worksheet.Column(1).AutoFit();
ここで、worksheetは、コードで作成したワークシートを参照する変数です(静的メソッドを持つクラスではありません!)。
明らかに、列を埋めた後にこのメソッドを呼び出すにする必要があります。
これは古い質問ですが、以下のコードを使用すると、あなたがしようとしたことを直接解決できるようです。
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();
}
少し遅れていますが、今日も同じ問題を抱えています。 worksheet.DefaultColWidth
definedがある場合、機能しません。その行を削除し、Worksheet.cells.AutoFitColumns();
を追加しましたが、現在は機能しています。
範囲を指定せずにセルを合わせることができることを指摘したいだけで、すべての列をフォーマットした後にこれを呼び出すようにしてください:
worksheet.Cells.AutoFitColumns()
それは私にとってはうまく機能しています。
試してください:
ExcelWorksheet wsSheet1 = ExcelPkg.Workbook.Worksheets.Add("Sheet1");
wsSheet1.Cells[wsSheet1.Dimension.Address].AutoFitColumns();
ExcelPkg.SaveAs();
幅を計算する必要があります。ライブラリには、意図したとおりに機能する自動サイズ変更機能はありません。
Autofitcolumnは、ラップされたテキストや数式を含むセルでは機能しません。
問題を解決する方法の例については、 http://epplus.codeplex.com/discussions/218294?ProjectName=epplus をご覧ください。
worksheet.Column(1).AutoFit(0);
AutoFit()を使用する必要がありましたが、トリックを実行していませんでした。
私はこれを使用し、うまく機能しています。
Dim objExcel As New ExcelPackage
Dim Sheet As ExcelWorksheet = objExcel.Workbook.Worksheets.Add("SheetName")
Sheet.Cells("B1:BN").AutoFitColumns()