如何使用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库(它可以让我做什么,我需要)。这很好,但是实现起来更复杂一些。
答
解决! 我可以使用:
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还没有这样的事情,或者他们做了,我错过了它。
解决!我可以这样使用:http://pastebin.com/wJfcgyhV – 2012-04-02 09:13:41
你可以将它写为答案并接受它来标记问题已解决。 – Aprillion 2012-04-02 09:55:25