首页 > 解决方案 > 如何在 C# windows 窗体中使用具有空格的字体来创建 excel 工作表?

问题描述

我正在使用IEnumerable变量在 C# windows 窗体应用程序中创建 Excel 工作表。问题是如果字体名称有 1 个单词,例如,我可以设置创建的工作表字体。'IRNazanin',但对于带有空格的字体名称,它不起作用,例如。'B 米特拉'。我的代码是:

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

我试过使用字体名称:

还是行不通。
我正在使用ClosedXML.Excel带有ClosedXML版本0.94.2.0和 MS Office 2016 的库。excel 将获取字体名称但不会应用它。

在此处输入图像描述

真正B Mitra的字体是这样的。(手动更改)

在此处输入图像描述

客户需要带有B Mitra字体和波斯数字的文件。所以我别无选择更改字体。

标签: c#excelwinformsclosedxml

解决方案


"B Mitra"是一个有效的字体名称,但您还需要更改FontCharSet

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

ClosedXMLXLFontCharSet.Default默认使用。输出 Excel 文件显示正确的字体名称,但不能正确显示单元格内容:

字体

我使用 Open XML SDK 2.5 Productivity Tool for Microsoft Office 来检查 Excel 文件。XLFontCharSet.Arabic那里有一条线:

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

并且内容按预期显示。


推荐阅读