EPPlus의 자동 열 너비


139

열의 텍스트가 길 때 열을 자동 너비로 만드는 방법은 무엇입니까?

이 코드를 사용합니다

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

이 방법들 중 어느 것도 작동하지 않습니다

작동시키는 방법이 있습니까?

참고 : 일부 텍스트는 유니 코드를 사용합니다.


2
Worksheet.cells.AutoFitColumns (); 작동하지만 모든 데이터를 포맷하고 인쇄 한 직후에 추가해야합니다.
Suresh Kamrushi

답변:


250

사용 AutoFitColumns하지만 셀을 지정해야합니다. 전체 워크 시트를 가정합니다.

VB.NET

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

씨#

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

워크 시트를 작성한 후이 메소드를 호출해야합니다.


9
워크 시트에 데이터가없는 경우 Worksheet.Dimension 속성은 null을 반환하므로 워크 시트를 채운 후에이 메서드를 호출해야합니다.
Landeeyo

@Landeeyo 감사합니다. 저에게 도움이됩니다. 내용물을 채운 후 너비를 설정하는 것이 중요합니다.
Lanka

3
매개 변수를 제공하지 않았을 때 AutoFitColumns 메서드가 작동하지 않았습니다. 최소 및 최대 너비를 추가하면 완벽하게 작동합니다.
Zeeshan Ajmal

4
이것은 절대적으로 정답입니다-Pangan은 그것을 그렇게 표시해야합니다.
GDB

셀을 계산 한 경우 Worksheet.Calculate()해당 셀의 값을 확인할 수 있도록 먼저 호출해야합니다 .
MikeH

38

이 코드를 EPPlus 버전 3.1.3.0과 함께 사용했으며 작동 중입니다.

worksheet.Column(1).AutoFit();

여기서 워크 시트는 코드에서 만든 워크 시트를 참조하는 변수입니다 (정적 메서드가있는 클래스가 아닙니다!).

열을 채운 후에는이 메소드호출 해야합니다 .


하루 종일 오류가 발생합니다. " '이 플랫폼에서는 System.Drawing이 지원되지 않습니다."
Kursat Turkay

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

너비를 계산해야합니다. 라이브러리에는 의도 한대로 작동하는 자동 크기 조정 기능이 없습니다.

자동 맞춤 열은 줄 바꿈 된 텍스트 및 수식이있는 셀에서는 작동하지 않습니다.

http://epplus.codeplex.com/discussions/218294?ProjectName=epplus 문제를 해결할 수있는 방법의 예.


epplus.codeplex.com/discussions/218294?ProjectName=epplus 이 문제에 대한 해결책을 찾을 수 없습니다.
Pengan

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.