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

我使用EPPlus进行Excel文件生成。

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

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

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

我已经为此创build了一个扩展方法,这有助于减less代码:

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