如何解决使用 Wingdings 字体的 C# Word 邮件合并
我在 C# 中有一个 Winform 应用程序,它正在从 DataGridView 进行邮件合并。 我需要为布尔单元格合并一个选中/未选中的框。
String strPresent;
char EmptyBox = (char)0xA8;
char CheckedBox = (char)0x254;
Boolean bPresent = (Boolean)selectedRow.Cells["Present"].Value;
if (bPresent)
strPresent = CheckedBox.ToString();
else
strPresent = EmptyBox.ToString();
在 Word 合并域处理代码中:
case "Present":
myMergeField.Select();
wordApp.Selection.TypeText(strPresent);
wordApp.Selection.MoveLeft(WdUnits.wdCharacter,1,WdMovementType.wdExtend);
到目前为止一切正常: 问题是复选框的格式是 Calibri (Body),而不是 Wingdings。
wordApp.Selection.Font.Name = "Wingdings";
break;
模板中的合并字段已经格式化为 Wingdings。 我在模板中尝试过 * charformat 而不是 * mergeformat 。 我添加了一个尾随下划线和一个空格,以防止 Selection.TypeText 选择整个段落。 使 Word 进程可见,我可以看到选择了正确的字符。
我也试过:
Range myRange = wordApp.Selection.Range;
myRange.Font.Name = "Wingdings";
解决方法
我尝试改变这个:
char EmptyBox = (char)0xA8;
char CheckedBox = (char)0x254;
为此:
char EmptyBox = Char.Parse("\u2610");
char CheckedBox = Char.Parse("\u2611");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。