2013-03-26 3 views
85

열의 텍스트가 긴 경우 자동 너비로 만들려면 어떻게합니까? EPPlus의 자동 열 너비

나는 이러한 방법의

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

없음

그것이 작동되도록하기 위해 어떤 방법이 있습니까

작동하지 않습니다이 코드를 사용?

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

답변

162

사용 AutoFitColumns,하지만 당신은 세포를 지정해야, 난 전체 워크 시트 가정

VB.NET을

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

C#

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

당신이 호출 할 필요가 있습니다 이 메서드는 워크 시트를 채운 후에 수행됩니다.

+1

작동하지 않습니다. – Pengan

+0

작동하지 않습니다 ... ToString이 필요하지 않습니다. – Beejee

+6

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

3

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

수식이 포함 된 줄 바꿈 텍스트 및 셀에는 자동 맞춤 열이 적용되지 않습니다.

문제를 해결할 수있는 방법의 예는 http://epplus.codeplex.com/discussions/218294?ProjectName=epplus을 참조하십시오.

+0

http://epplus.codeplex.com/discussions/218294?ProjectName=epplus 이 문제의 해결 방법을 찾을 수 없습니다. – Pengan

31

나는 EPPlus의 버전 3.1.3.0이 코드를 사용하고 그것은 노력하고 있습니다 :

워크 시트가 정적으로 내 코드에서 만든 워크 시트 (안 클래스를 참조하는 변수입니다
worksheet.Column(1).AutoFit(); 

방법!).

열을 채운 후에 분명히 이 메서드를 호출해야합니다.

+4

마지막 문장을 강조해야합니다. ** 열을 채운 후에이 메서드를 호출하십시오. ** –

2

사용 했음 worksheet.Column(1).AutoFit(0); AutoFit()이 (가) 트릭을 수행하지 않았습니다.

1

잘 사용하고 있습니다.

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

코드에 대한 자세한 설명을 남겨 둘 수 있습니까? – Shawn

7

저는 조금 늦었지만 오늘 같은 문제가있었습니다. worksheet.DefaultColWidth이 정의되어 있으면 작동하지 않습니다. 그 행을 삭제하고 Worksheet.cells.AutoFitColumns();을 추가했는데 이제 작동합니다.

+3

'sheet.Cells.AutoFitColumns()'가 더 간단합니다. 팁 주셔서 감사합니다! ClosedXml에서는'sheet.Columns(). AdjustToContents()'를 사용합니다. – nawfal

6

이 질문은 오래된 질문이지만 아래 코드를 사용하면 직접 시도한 내용을 처리하는 것 같습니다.

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