IT

Excel용 EPLus 라이브러리로 다중 스타일 셀을 만들려면 어떻게 해야 합니까?

itgroup 2023. 4. 28. 20:28
반응형

Excel용 EPLus 라이브러리로 다중 스타일 셀을 만들려면 어떻게 해야 합니까?

저는 엑셀 파일 생성을 위해 EPLUS를 사용합니다.

HTML 텍스트(굵은 글씨, 기울임꼴, 글꼴 색, 이름, 크기 매개변수)를 Excel Cell로 변환해야 한다는 뜻입니다.다음과 같은 멀티 스타일 셀을 생성해야 합니다.

셀 텍스트는 "안녕하세요!"입니다.
제가 원하는 스타일은:

he - bold  
ll - italic  
o! - red colored font  

또는 (더 복잡한)

hello! - bold  
ll - italic (also bold)  
o! - red colored (also bold)  

MS OpenXML 라이브러리에 대해 알고 있습니다(필요한 작업을 수행할 수 있게 해줍니다).이것은 좋지만 구현을 위한 좀 더 복잡한 라이브러리입니다.

해결됐어요! 그걸 사용할 수 있어요.

FileInfo fi = new FileInfo(@"c:\Book1.xlsx");

      using (ExcelPackage package = new ExcelPackage(fi))
      {
        // add a new worksheet to the empty workbook
        ExcelWorksheet worksheet = package.Workbook.Worksheets["Inv"];
        //Add the headers

        worksheet.Cells[2, 1].IsRichText = true;
        ExcelRichText ert = worksheet.Cells[2, 1].RichText.Add("bugaga");
        ert.Bold = true;
        ert.Color = System.Drawing.Color.Red;
        ert.Italic = true;

        ert = worksheet.Cells[2, 1].RichText.Add("alohaaaaa");
        ert.Bold = true;
        ert.Color = System.Drawing.Color.Purple;
        ert.Italic = true;

        ert = worksheet.Cells[2, 1].RichText.Add("mm");
        ert.Color = System.Drawing.Color.Peru;
        ert.Italic = false;
        ert.Bold = false;


        package.Save();
      }

어떤 이유에서인지 안톤의 대답은 나에게 통하지 않았습니다.다음을 사용해야 했습니다.

FileInfo fi = new FileInfo(@"c:\Book1.xlsx");

using (ExcelPackage package = new ExcelPackage(fi))
{
    // add a new worksheet to the empty workbook
    ExcelWorksheet worksheet = package.Workbook.Worksheets["Inv"];

    //add multi-coloured text to a cell
    worksheet.Cells[2, 1].IsRichText = true;
    ExcelRichTextCollection rtfCollection = worksheet.Cells[2, 1].RichText;
    ExcelRichText ert = rtfCollection.Add("bugaga");
    ert.Bold = true;
    ert.Color = System.Drawing.Color.Red;
    ert.Italic = true;

    ert = rtfCollection.Add("alohaaaaa");
    ert.Bold = true;
    ert.Color = System.Drawing.Color.Purple;
    ert.Italic = true;

    ert = rtfCollection.Add("mm");
    ert.Color = System.Drawing.Color.Peru;
    ert.Italic = false;
    ert.Bold = false;

    package.Save();
}

코드를 조금 줄이는 데 도움이 되는 확장 방법을 만들었습니다.

public static class RichtTextExtensions
{
    public static ExcelRichText Add(this ExcelRichTextCollection richTextCollection,
        string text, bool bold = false, bool italic = false, Color? color = null, float size = 11,
        bool underline = false, string fontName = "Segoe UI Light")
    {
        var richText = richTextCollection.Add(text);

        richText.Color = color ?? Color.Black;
        richText.Bold = bold;
        richText.Italic = italic;
        richText.Size = size;
        richText.FontName = fontName;
        richText.UnderLine = underline;

        return richText;
    }
}

사용 방법: var 워크시트 = 패키지.워크북.워크시트.추가("시트1");

using (ExcelRange cellRange = worksheet.Cells[1,1])
{
    cellRange.RichText.Add("This is ", size: 18, underline:true);
    cellRange.RichText.Add("a simple ", bold: true, size: 18, underline: true);
    cellRange.RichText.Add("test ", size: 18, underline: true);
    cellRange.RichText.Add("of the extension method", bold: true, size: 18, underline: true);
}

왜 EPLUS가 이미 이런 것을 가지고 있지 않은지, 아니면 아마도 그들이 가지고 있고 나는 그것을 놓쳤을 것입니다.

언급URL : https://stackoverflow.com/questions/9973240/how-can-i-create-multistyled-cell-with-epplus-library-for-excel

반응형