reporte planilla para office guardar filas exportar desde datos crear contar como codigo archivo c# excel openxml epplus

planilla - crear reporte excel c#



¿Cómo puedo crear celdas de varios estilos con la biblioteca EPPlus para Excel? (3)

Yo uso EPPlus para la generación de archivos de Excel.

Quiero decir que necesito convertir texto HTML (negrita, cursiva, color de fuente, nombre, parámetros de tamaño) a Excel Cell. Supongo que necesita crear la celda de estilo múltiple, como:

el texto de la celda es "hola!"
el estilo que quiero es:

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

o (más complejo)

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

Sé sobre la biblioteca de MS OpenXML (me permite hacer lo que necesito). Esta es una librería buena pero un poco más compleja para la implementación.


He creado un método de extensión para esto que ayuda a reducir el código un poco:

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

Y para usarlo: 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); }

No estoy seguro de por qué EPPlus ya no tiene algo como esto, o quizás sí, y me lo perdí.


Por alguna razón, la respuesta de Anton no me funcionó. Tuve que usar:

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


Resuelto Puedo usar eso:

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