ClosedXml을 사용하여 수식 셀에서 Excel 줄 바꿈 텍스트를 만드는 방법
문제는 해당 셀이 긴 문자열을 가진 셀을 지칭하는 공식을 포함할 때 셀 내용물이 랩되지 않는다는 것입니다.
CodePlex에서 이 문제에 대한 스레드와 문제를 확인할 수 있는 간단한 코드를 찾았습니다.
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;
하지만 역시 성공하지 못했습니다.
이것에 대해 제가 할 수 있는 일이 있나요?
Peter Albert의 코멘트에 따라, 저는 세트의 행을 만들기 위해 노력했습니다.AutoFit
ClosedX에서 이걸 할 수 있었던 유일한 방법은ML은workSheet.Row(3).AdjustToContent();
그러나 이것도 작동하지 않았습니다(특정 열의 내용을 조정하지 않았습니다).
내용에 조정을 적용하는 대신 랩 텍스트를 다음과 같이 적용할 수 있습니다.
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;
그리고 두 가지를 모두 적용하려면 AdjustToContents 이후에 사용합니다.
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;
사용합니다.
xlWorkSheet.Range["A4:A4"].Cells.WrapText = true;
죄송합니다. 아직 댓글을 쓸 수가 없습니다.AutoFit은 ClosedXML의 속성이 아닙니다. AdjustToContents에 대해 제 버전(2014년 7월 26일, 0.72.3)에서는 WordWrap 속성(긴 줄로 분할됨)을 무시합니다.이것이 주 수표입니다.
if (c.HasRichText || textRotation != 0 || c.InnerText.Contains(Environment.NewLine))
{
// omissis...
}
else
thisHeight = c.Style.Font.GetHeight( fontCache);
이 구현은 셀이 자동 랩으로 인해 두 줄 이상인 경우 정확한 높이를 무시합니다.따라서 AdjustToContents + AutoWrap이 작동하지 않습니다.내용 크기의 높이가 필요한 경우 내용 조정을 호출하지 않아야 합니다.이 동작은 XL IsAutoHeight 속성과 호환되지 않습니다.
또한 동일한 Codeplex 페이지에서 라이브러리 작성자는 다음과 같이 말합니다.
이건 알아내는데 시간이 좀 걸렸습니다.
다른 셀을 가리키는 셀에 랩 텍스트를 설정할 때 Excel은 실제로 부정행위를 하는 것입니다.필요한 높이를 계산한 다음 행 높이 속성을 설정합니다.이건 제가 여기서 할 수 없는 일입니다.
없이 지내야 할 것입니다.
이것은 이 기능이 불가능하다는 것을 의미합니다.
그SetWrapText();
나를 위해 일했습니다.
다음 솔루션을 찾았습니다(Excel만 해당).
나는 설정
row.Cells("start cell : end cell").Style.Alignment.SetWrapText(true)
사용된 모든 셀에 대해다음 텍스트로 VBA 매크로를 작성했습니다.
Range("A" & Row & ":N" & Row).EntireRow.AutoFit
(행용)Range("A" & Row & ":N" & Row).EntireColumn.AutoFit
(칼럼용)문서 시작 시 실행하도록 할당됨
언급URL : https://stackoverflow.com/questions/15198445/how-to-make-excel-wrap-text-in-formula-cell-with-closedxml
'programing' 카테고리의 다른 글
SQL Developer가 너무 느립니다.또 뭐 쓸 게 있나요? (0) | 2023.06.17 |
---|---|
리눅스에서 오라클 10gxe를 재구성하는 방법 (0) | 2023.06.17 |
GCC 인라인 어셈블리의 레이블 (0) | 2023.06.17 |
Firebase 트리거를 위한 클라우드 기능 제 시간에? (0) | 2023.06.17 |
뷰 라우터 없이 검색 필드 뷰 j에 자동 제안을 구현하려면 어떻게 해야 합니까? (0) | 2023.06.17 |