【问题标题】:C# Word Mail Merge using Wingdings font使用 Wingdings 字体的 C# Word 邮件合并
【发布时间】:2021-05-08 09:55:45
【问题描述】:

我有一个 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";

【问题讨论】:

标签: c# fonts automation ms-word mailmerge


【解决方案1】:

我尝试改变这个:

    char EmptyBox = (char)0xA8;
    char CheckedBox = (char)0x254;

到这里:

    char EmptyBox = Char.Parse("\u2610");
    char CheckedBox = Char.Parse("\u2611");

现在我看到了一个复选框,但它在水平方向上显得很窄?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多