如何使用Excel的EPPlus库创建多级单元格

问题描述:

我使用EPPlus来生成Excel文件。如何使用Excel的EPPlus库创建多级单元格

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

单元格文本是“你好!”
我想要的风格是:

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

或(更复杂)

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

我知道MS的OpenXML库(它可以让我做什么,我需要)。这很好,但是实现起来更复杂一些。

+0

解决!我可以这样使用:http://pastebin.com/wJfcgyhV – 2012-04-02 09:13:41

+1

你可以将它写为答案并接受它来标记问题已解决。 – Aprillion 2012-04-02 09:55:25

解决! 我可以使用:

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(); 
} 
+0

此刻我已经使用了最新版本3.0.0.2。请检查你的lib的版本。 – 2012-04-20 07:27:53

我创建了这个扩展方法,这有助于减少代码一点点:

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工作表= package.Workbook。 Worksheets.Add( “工作表Sheet”);

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还没有这样的事情,或者他们做了,我错过了它。