Lebar kolom otomatis di EPPlus


139

Bagaimana membuat kolom menjadi lebar otomatis ketika teks dalam kolom panjang?

Saya menggunakan kode ini

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

Tidak satu pun dari metode ini yang berfungsi

Apakah ada cara untuk membuatnya bekerja?

Catatan: Beberapa teks saya menggunakan Unicode.


2
Worksheet.cells.AutoFitColumns (); akan berfungsi, tetapi harus ditambahkan tepat setelah Anda memformat dan mencetak semua data.
Suresh Kamrushi

Jawaban:


250

Gunakan AutoFitColumns, tetapi Anda harus menentukan sel, saya menganggap seluruh lembar kerja:

VB.NET

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

C #

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

Harap perhatikan bahwa Anda perlu memanggil metode ini setelah mengisi lembar kerja.


9
Yang penting di sini adalah Anda perlu memanggil metode ini setelah mengisi lembar kerja karena properti Lembar Kerja. Dimensi akan mengembalikan nol jika tidak ada data di lembar kerja.
Landeeyo

@Landeeyo Terima kasih itu membantu saya. Penting untuk mengatur lebar setelah mengisi konten.
Lanka

3
Metode AutoFitColumns tidak berfungsi untuk saya ketika saya tidak memberikan parameter, ketika saya menambahkan min dan lebar maks untuk itu, ia bekerja dengan sempurna.
Zeeshan Ajmal

4
Ini benar-benar jawaban yang benar - Pangan harus menandainya seperti itu.
GDB

Jika Anda telah menghitung sel, Anda harus menelepon Worksheet.Calculate()dulu agar nilai sel-sel itu dapat ditentukan.
MikeH

38

Saya telah menggunakan kode ini dengan versi 3.1.3.0 dari EPPlus dan berfungsi:

worksheet.Column(1).AutoFit();

di mana lembar kerja adalah variabel yang merujuk lembar kerja yang telah saya buat dalam kode saya (bukan kelas dengan metode statis!).

Jelas Anda harus memanggil metode ini setelah Anda mengisi kolom .


mendapatkan kesalahan sepanjang hari. "Sistem. Gambar tidak didukung pada platform ini."
Kursat Turkay

15

Saya tahu ini adalah pertanyaan lama, tetapi saya menggunakan kode di bawah ini dan sepertinya langsung membahas apa yang telah Anda coba lakukan.

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

Hanya ingin menunjukkan bahwa Anda dapat memasukkan sel tanpa menentukan rentang, pastikan untuk memanggil ini setelah Anda memformat semua kolom dll:

worksheet.Cells.AutoFitColumns()

1
Ini berhasil untuk saya. Jangan lupa untuk memanggilnya setelah Anda menambahkan data. Ketika saya menyebutnya sebelum data ditambahkan, tidak ada yang terjadi.
mortb

10

Saya tahu sedikit terlambat tapi saya punya masalah yang sama hari ini. Jika Anda memiliki worksheet.DefaultColWidthdefinisi, itu tidak akan berfungsi. Saya telah menghapus baris itu dan menambahkannya Worksheet.cells.AutoFitColumns();dan berfungsi sekarang.


5
sheet.Cells.AutoFitColumns()lebih sederhana, terima kasih atas tipnya! Di ClosedXml, Anda melakukannyasheet.Columns().AdjustToContents()
nawfal

6

Ini bekerja dengan baik untuk saya.

Mencoba:

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

3

Harus menggunakan worksheet.Column(1).AutoFit(0);AutoFit () tidak melakukan trik.



3

.NET Core sebagai penerus .NET tidak mendukung lagi fungsi sel autofit dengan pustaka EPPplus.

worksheet.Cells.AutoFitColumns();

atau

worksheet.Column(1).AutoFit();

menyebabkan pengecualian:

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

Rakitan System.Drawing tergantung pada pustaka khusus GDI dan Windows yang harus diganti oleh solusi lain. Solusi untuk masalah ini bagi saya tidak diketahui.


1

Saya menggunakan ini dan bekerja dengan baik.

Dim objExcel As New ExcelPackage
Dim Sheet As ExcelWorksheet = objExcel.Workbook.Worksheets.Add("SheetName")
Sheet.Cells("B1:BN").AutoFitColumns()
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.