首页 文章

如何使用EPPlus库for Excel创建多列单元格

提问于
浏览
20

我使用EPPlus生成Excel文件 .

我的意思是我需要将HTML文本(粗体,斜体,字体颜色,名称,大小参数)转换为Excel单元格 . 我想它需要创建多样式的单元格,如:

单元格文本是"hello!"
我想要的风格是:

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

或者(更复杂)

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

我知道MS OpenXML库(它允许我做我需要的) . 这是一个很好但有点复杂的库实现 .

3 回答

  • 3

    解决了!我可以用它:

    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();
          }
    
  • 1

    出于某种原因,安东的回答对我没有用 . 我不得不使用:

    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();
    }
    
  • 25

    我为此创建了一个扩展方法,它有助于减少代码:

    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 worksheet = package.Workbook.Worksheets.Add(“Sheet1”);

    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);
    }
    

    不知道为什么EPPlus还没有这样的东西,或者他们这样做了,我错过了它 .

相关问题