2012-04-02 9 views
20

Io uso EPPlus per la generazione di file Excel.Come posso creare una cella multistilata con la libreria EPPlus per Excel

Voglio dire, ho bisogno di convertire il testo HTML (grassetto, corsivo, colore del font, nome, parametri di dimensione) in Excel Cell. Suppongo che sia necessario creare la cella multi-stile, ad esempio:

il testo della cella è "ciao!"
lo stile che voglio è:

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

o (più complesso)

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

che so di biblioteca MS OpenXML (che mi permette di fare quello che mi serve). Questa è una buona ma una libreria più complessa per l'implementazione.

+0

Risolto !!! Posso usare quello: http://pastebin.com/wJfcgyhV –

+1

puoi scriverlo come risposta e accettarlo per contrassegnare la domanda come risolta .. – Aprillion

risposta

24

Risolto! posso usare che:

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

Per qualche ragione la risposta non ha funzionato di Anton per me. Ho dovuto usare:

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

Ho usato l'ultima versione 3.0.0.2 in questo momento. Per favore controlla la versione della tua lib. –

1

ho creato un metodo di estensione per questo che aiuta a ridurre il codice un po ':

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

E per usarlo: var foglio di lavoro = 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); 
} 

Non so perché EPPlus non abbia già qualcosa di simile, o forse lo fanno e l'ho perso.

Problemi correlati