微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Wingdings 字体的 C# Word 邮件合并

如何解决使用 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");

现在我看到一个复选框,但它在水平方向上看起来很窄? enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。