2013-03-04 1 views
7

문제는 셀에 긴 문자열이있는 셀을 참조하는 수식이 들어있는 경우 셀 내용이 줄 바꿈되지 않는다는 것입니다. 나는 또한 행 높이를 설정하려고ClosedXml을 사용하여 수식 셀에 Excel 줄 바꿈 텍스트를 만드는 방법

var generated = new XLWorkbook(); 
var workSheet = generated.AddWorksheet("Test"); 
workSheet.Cell("B1").Style.Alignment.WrapText = true; 
workSheet.Cell("B1").Value = "hello hello hello hello hello"; 
workSheet.Cell("A3").FormulaA1 = "B1"; 
workSheet.Cell("A3").Style.Alignment.WrapText = true; 
generated.SaveAs("Generated.xlsx"); 

하는 대신 수동으로 셀 포장 :

workSheet.Row(3).Height = workSheet.Row(1).Height; 

CodePlex에 나는이 문제를보고이 문제를 간단한 코드에 스레드를 발견 그러나 아무 성공도.

내가 할 수있는 일이 있습니까?


피터 알버트에 의해 주석에 이어, 내가 만들려고 설정 행의 AutoFit. ClosedXML에서이 작업을 수행 할 수있는 유일한 방법은 workSheet.Row(3).AdjustToContent();입니다. 그러나 이것은 (특정 컬럼의 내용을 조정하는 것도 아니어도) 작동하지 않았습니다.

+1

'worksheet.Cell ("A3"). WrapText = True' 다음에'worksheet.Row (3) .EntireRow.AutoFit'을 시도하십시오. –

+0

@PeterAlbert 답변이 가치 있다고 생각합니다! –

+0

@PeterL. 아니야 – horgh

답변

0

죄송합니다, 아직 의견을 쓸 수 없습니다 ... AutoFit은 ClosedXML 속성입니다. AdjustToContents에 대한 내용 (2014/07/2014, 0.72.3 생각)은 WordWrap 속성 (긴 줄을 나눕니다)을 무시합니다. 이 주 체크

  if (c.HasRichText || textRotation != 0 || c.InnerText.Contains(Environment.NewLine)) 
      { 
       // omissis... 
      } 
      else 
       thisHeight = c.Style.Font.GetHeight(fontCache); 

이 구현 셀 때문에 autowrap 이상의 광고 인 경우 정확한 높이를 무시한다. 따라서 AdjustToContents + AutoWrap이 작동하지 않습니다. 콘텐츠 크기의 높이가 필요한 경우 AdjustToContents를 호출하지 않아야합니다. 이 동작은 XL IsAutoHeight 속성과 호환되지 않습니다.

5

내가 대신 목차에 조정 신청의이

xlWorkSheet.Range["A4:A4"].Cells.WrapText = true; 
+0

'ClosedXML'은 이런 종류의'Range' 인덱서를 가지고 있지 않습니다. 아마'EPPlus' 코드를 게시 했습니까? –

5

를 사용,이

var generated = new XLWorkbook(); 
var workSheet = generated.AddWorksheet("Test"); 
worksheet.Cell(3, 2).Value = "Hello Hello Hello Hello Hello Hello Name";  
worksheet.Cell(3, 2).Style.Alignment.WrapText = true; 

처럼 Wraptext을 적용 할 수 있습니다 그리고 적용 할 경우 모두 AdjustToContents 후 사용. 또한 바로 그 같은 CodePlex의 페이지에

var generated = new XLWorkbook(); 
var workSheet = generated.AddWorksheet("Test"); 
worksheet.Columns(2, 20).AdjustToContents();  
worksheet.Cell(3, 2).Value = "Hello Hello Hello Hello Hello Hello Name"; 
worksheet.Cell(3, 2).Style.Alignment.WrapText = true; 
0

주, 라이브러리 상태의 저자 :

이 사람은 알아 내기 위해 잠시했다.

Excel은 실제로 다른 텍스트를 가리키는 셀의 줄 바꾸기 텍스트를 설정할 때 부정 행위입니다. 필요한 높이를 계산 한 다음 행 높이 속성을 설정합니다. 이것은 내가 여기서 할 수없는 일입니다.

당신은없이해야합니다.

나에게 이것은이 기능을 사용할 수 없다는 것을 의미합니다.