programing

ClosedXml을 사용하여 수식 셀에서 Excel 줄 바꿈 텍스트를 만드는 방법

goodcopy 2023. 6. 17. 22:44
반응형

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의 코멘트에 따라, 저는 세트의 행을 만들기 위해 노력했습니다.AutoFitClosedX에서 이걸 할 수 있었던 유일한 방법은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만 해당).

  1. 나는 설정row.Cells("start cell : end cell").Style.Alignment.SetWrapText(true)사용된 모든 셀에 대해

  2. 다음 텍스트로 VBA 매크로를 작성했습니다.Range("A" & Row & ":N" & Row).EntireRow.AutoFit(행용)Range("A" & Row & ":N" & Row).EntireColumn.AutoFit(칼럼용)

  3. 문서 시작 시 실행하도록 할당됨

언급URL : https://stackoverflow.com/questions/15198445/how-to-make-excel-wrap-text-in-formula-cell-with-closedxml

반응형