如何在 C# windows 表单中使用具有 space 的字体来创建 excel 工作表?

How to use fonts having space in C# windows form to create excel workseet?

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

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

我试过使用字体名称:

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

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

客户需要 B Mitra 字体和波斯数字的文件。所以没办法改字体了

如果您使用的是 ClosedXML 库,请尝试使用 setFontName 方法:

ws.Style.Font.SetFontName("B Mitra");

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

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

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

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

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

并且内容按预期显示。