C#의 Excel 셀에 프로그래밍 방식으로 새로운 라인을 삽입하는 방법?

StackOverflow https://stackoverflow.com/questions/1176548

  •  19-09-2019
  •  | 
  •  

문제

Aspose 라이브러리를 사용하여 Excel 문서를 작성하고 있습니다. 일부 셀의 어딘가에 텍스트의 두 부분 사이에 새 선을 삽입해야합니다.

" r n"을 시도했지만 작동하지 않으며 셀에 두 개의 정사각형 기호 만 표시됩니다. 그러나 Alt+Enter를 눌러 동일한 셀에서 새 줄을 만들 수 있습니다.

프로그래밍 방식으로 새 라인을 어떻게 삽입합니까?

도움이 되었습니까?

해결책

Aspose 셀 포럼에서 : 셀에서 새 라인 숯을 사용하는 방법?

텍스트를 공급 한 후 셀의 istextwrapped 스타일을 True로 설정해야합니다.

worksheet.Cells[0, 0].Style.WrapText = true;

다른 팁

cell.Text = "your firstline<br style=\"mso-data-placement:same-cell;\">your secondline";

DB에서 텍스트를받는 경우 :

cell.Text = textfromDB.Replace("\n", "<br style=\"mso-data-placement:same-cell;\">");

IIRC가 10 (10) 인 Excel이 사용하는 문자 코드를 삽입해야합니다.


편집하다: 좋아요, 여기 코드가 있습니다. 다음을 포함하는 셀을 만들어 사용 된 문자 코드가 실제로 10임을 확인할 수있었습니다.

... 그런 다음 그것을 선택하고 VBA 바로 즉시 실행하십시오.

?Asc(Mid(Activecell.Value,2,1))

따라서 해당 값을 VBA의 다른 셀에 삽입 해야하는 코드는 다음과 같습니다.

ActiveCell.Value = "A" & vbLf & "B"

(VBLF는 문자 코드 10이므로).

나는 당신이 C#을 사용하고 있다는 것을 알고 있지만 나는 그것이 많이 VBA에서 먼저해야 할 경우 무엇을 해야하는지 쉽게 알아낼 수 있습니다. 아무 것도 컴파일하지 않고도 "대화식으로"시도 할 수 있기 때문입니다. C#에서 무엇을 하든지 VBA에서하는 일을 복제하기 때문에 차이가 거의 없습니다. (C# interop 재료는 VBA와 동일한 기본 COM 라이브러리를 사용하고 있음을 기억하십시오).

어쨌든, 이에 대한 c#은 다음과 같습니다.

oCell.Value = "A\nB";

차이를 발견 :-)


편집 2: Aaaargh! 방금 게시물을 다시 읽고 Aspose 라이브러리를 사용하는 것을 보았습니다. 죄송합니다. 그 경우에는 전혀 모릅니다.

내부 Excel은 u+000d U+000a를 사용합니다 (CR+LF, \r\n) 라인 브레이크의 경우 적어도 XML 표현에서. 또한 셀에서 직접 값을 찾을 수 없었습니다. 공유 문자열이 포함 된 다른 XML 파일로 마이그레이션되었습니다. 라인 브레이크를 포함하는 셀이 파일 형식으로 다르게 처리되며 라이브러리는 이에 대해 알지 못할 수 있습니다.

.NET 용 스프레드 시트 기어 이런 식으로 :

        IWorkbook workbook = Factory.GetWorkbook();
        IRange a1 = workbook.Worksheets[0].Cells["A1"];
        a1.Value = "Hello\r\nWorld!";
        a1.WrapText = true;
        workbook.SaveAs(@"c:\HelloWorld.xlsx", FileFormat.OpenXMLWorkbook);

"wraptext = true" - Excel은 이것없이 텍스트를 감싸지 않습니다. 나는 Aspose가 비슷한 API를 가지고 있다고 가정합니다.

면책 조항 : 스프레드 시트 기어 LLC를 소유하고 있습니다

누구든지 Infragictistics 솔루션에 관심이 있다면 여기에 있습니다.

  1. 사용

    Environment.NewLine

  2. 셀이 포장되어 있는지 확인하십시오

    dataSheet.Rows[i].Cells[j].CellFormat.WrapText = ExcelDefaultableBoolean.True;

" n"은 잘 작동합니다. 입력이 멀티 라인 텍스트 상자에서 나오면 새로운 라인 문자가 " r n"이되며 " n"으로 대체되면 작동합니다.

Pear 'Spreadsheet_excel_Writer'및 'Ole'사용 :

내가 얻을 수있는 유일한 방법 "\n"일하는 것은 세포를 만드는 것이 었습니다 $format->setTextWrap(); 그리고 "사용"\n" 작동 할 것이다.

chr (13)를 사용할 수 있습니다. 그런 다음 모든 것을 Chr (34)로 감싸십시오. Chr (34)는 이중 인용문입니다.

  • vb.net 예 :
  • thecontactinfo = ""
  • thecontactinfo = trim (이 메일) & chr (13)
  • thecontactinfo = thecontactinfo & trim (폰) & chr (13)
  • thecontactinfo = chr (34) & thecontactinfo & chr (34)

나를 위해 일한 것 :

worksheet.Cells[0, 0].Style.WrapText = true;
worksheet.Cells[0, 0].Value = yourStringValue.Replace("\\r\\n", "\r\n");

내 문제는 r n이 탈출되었다는 것입니다.

사실, 정말 간단합니다.

XML 버전의 Excel을 편집 할 수 있습니다. 셀을 편집하여 텍스트 사이에 새로운 선을 제공 한 다음 저장하십시오. 나중에 편집기에서 파일을 열 수 있으면 새 라인이 표시됩니다.&#10;

시도해보세요 ....

" n"을 시도해 보셨습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top