2011-05-09 54 views
19

Estoy usando NPOI para sacar Excel de la aplicación Asp.Net MVC y funciona muy bien con texto sin formato, pero ahora me han pedido que agregue formato y tengo problemas donde necesito tener una sola celda con texto en negrita seguido de texto no negrita. p.ej.NPOI crear celda que contiene texto en negrita y negrita

Este texto en negrita - este texto normal

Sé que puedo dar a una célula de un solo estilo, pero esto no va a ayudar y no puedo ver de todos modos para dar una célula algunos pre-formateada Texto rico.

La única solución posible que puedo pensar es crear dos celdas por separado y unirlas, pero ¿significará que el formato se perderá?

¿Hay alguna manera de hacer esto que me he perdido en NPOI?

Respuesta

-1

Después de una buena cantidad de investigación parece que usted no es capaz de hacer esto dentro de NPOI ya que no proporciona la funcionalidad necesaria para que pueda configurar el formato de texto específico dentro de una célula como si estuviera tratando de hacer .

+1

False. (Debe aceptar una de las respuestas dadas) – Slight

+2

@Slight esto fue una respuesta hace casi 4 años. En ese momento, el código no funcionó ya que también lo necesitaba, incluso con las soluciones propuestas. Como un lado, ¿puedo preguntar cuál es el valor de votar una respuesta de casi 4 años? – Nathan

20

Afortunadamente, usted capaz de hacer eso ... Mira este código:

Font f1=wb.CreateFont(); 
f1.Color=HSSFColor.RED.index; 
ws.GetRow(1).GetCell(0).RichStringCellValue.ApplyFont(1, 5, f1); 
+0

Esto responde la pregunta perfectamente. Muy útil. Gracias – cusman

15

Usted puede intentar esto:

 var font = reportWorkbook.CreateFont(); 
     font.FontHeightInPoints = 11; 
     font.FontName = "Calibri"; 
     font.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.BOLD; 

     var cell = headerRow.CreateCell(0); 
     cell.SetCellValue("Test Bold"); 
     cell.CellStyle = reportWorkbook.CreateCellStyle(); 
     cell.CellStyle.SetFont(font); 
+3

Lo he usado para configurar el texto en negrita en la celda completa, no en la mitad/mitad –

+1

OP pregunta por el texto de celda enriquecida. ¿Cómo aplicaría esta fuente a una parte del texto de la celda? –

2

Parece que la respuesta Ernie Banzon ya no funciona exactamente como se describe , posiblemente debido a un cambio de espacio de nombres (o en el hecho de que estoy usando el espacio de nombres HSSF?)

// usings 
using NPOI.HSSF.UserModel; 

// IWorkbook doc 
IFont font = doc.CreateFont(); 
font.FontHeightInPoints = 11; 
font.FontName = "Arial"; 
font.Boldweight = (short)FontBoldWeight.BOLD; 
+1

OP pregunta por el texto de celda enriquecido. ¿Cómo aplicaría esta fuente a una parte del texto de la celda? –

1

Utilice esta opt ion

font.Boldweight = (short)700;//FontBoldWeight.Bold; 

La sintaxis real debería ser la siguiente. Pero ambos sintaxis no funciona en algún momento

font.Boldweight = FontBoldWeight.Bold ; 
Or 
font.Boldweight = (short)FontBoldWeight.Bold; 

FontBoldWeight es tipo de enumeración, que después de la conversión de tipos puede no funcionar en algún momento. Como una solución alternativa si escribe casta o usa el valor corto real de enum directamente, funciona. A continuación se muestra la declaración de FontBoldWeight. aclarará las cosas

**public enum FontBoldWeight 
    { 
       None = 0, 
       Normal = 400, 
       Bold = 700, 
    }** 
Cuestiones relacionadas