Estoy usando una variable IEnumerable para crear una hoja de cálculo de Excel en la aplicación de formulario de Windows C #. El problema es que puedo configurar la fuente de la hoja de trabajo creada si el nombre de la fuente tiene 1 palabra, ej. 'IRNazanin', pero para el nombre de fuente con espacio no funciona, ej. «B Mitra». Mi código es:

var wb = new XLWorkbook { RightToLeft = true };
var ws = wb.Worksheets.Add("Sick_Information");
ws.Columns().AdjustToContents();
ws.Style.Font.FontName = "B Mitra";

He intentado usar el nombre de la fuente:

  • sin escasez, ej. "BMitra"
  • con un guión, ej. "B-Mitra"
  • con subrayado, ej. "B_Mitra"
  • con qout extra simple, ej. "'B Mitra'"

Todavía no funciona.
Estoy usando la biblioteca ClosedXML.Excel con ClosedXML versión 0.94.2.0 y MS Office 2016. El Excel obtendrá el nombre de la fuente pero no lo aplicará.

enter image description here

La fuente verdadera B Mitra es así. (Cambiado manualmente)

enter image description here

El cliente necesita un archivo con fuente B Mitra y números persas. Entonces no tengo otra opción para cambiar la fuente.

1
Ali Majed HA 25 dic. 2019 a las 10:04

2 respuestas

La mejor respuesta

"B Mitra" es un nombre de fuente válido, pero también debe cambiar FontCharSet:

cell.Style.Font.SetFontName("B Mitra");
cell.Style.Font.SetFontCharSet(XLFontCharSet.Arabic);

ClosedXML usa XLFontCharSet.Default por defecto. El archivo Excel de salida muestra el nombre de fuente correcto, pero no muestra el contenido de la celda correctamente:

font

Utilicé la herramienta de productividad Open XML SDK 2.5 para Microsoft Office para inspeccionar el archivo de Excel. Con XLFontCharSet.Arabic hay una línea allí:

FontCharSet fontCharSet6 = new FontCharSet(){ Val = 178 };

Y el contenido se muestra como se esperaba.

2
ASh 18 ene. 2020 a las 16:20

Si está utilizando la biblioteca ClosedXML, intente usar el método setFontName:

ws.Style.Font.SetFontName("B Mitra");
0
user12361161user12361161 25 dic. 2019 a las 07:22