Range.Find.Execute(C#)忽略时间格式

时间:2014-05-12 21:44:16

标签: c# string ms-word office-interop

更新:找到了解决方案!

我只是用普通文本替换了字段,而不是使用字段,并且当用动态字符串替换文本时,不会强制执行时间格式。希望这有帮助!


我在使用来自我的独立C#Windows应用程序的值更新Microsoft Word模板时遇到问题。

问题:

对于时间输入,我允许用户选择他们是否希望以12小时格式使用am / pm或24小时格式。我有很好的应用程序方面的东西。但是当我调用Range.Find.Execute,并且我选择了24小时格式时,最终的单词文档和pdf没有按照这种方式格式化的时间。模板中的字段会被替换,但无论我传入Range.Find.Execute的字符串,它们都是12小时格式。

我尝试了什么:

以下是我尝试过的代码:

private void FindAndReplace(Application wordApp,
                            object findText,
                            object replaceWithText)
{
    object matchCase = true;
    object matchWholeWord = true;
    object matchWildCards = false;
    object matchSoundsLike = false;
    object nmatchAllWordForms = false;
    object forward = true;
    object format = false;
    object matchKashida = false;
    object matchDiacritics = false;
    object matchAlefHamza = false;
    object matchControl = false;
    object replace = 2;
    object wrap = 1;

    foreach (Range range in wordApp.ActiveDocument.StoryRanges)
    {
        Range range2 = range;
        while (range2 != null)
        {
            range2.Find.Execute(ref findText, ref matchCase, ref matchWholeWord, ref matchWildCards,
                ref matchSoundsLike, ref nmatchAllWordForms, ref forward, ref wrap, ref format,
                ref replaceWithText, ref replace, ref matchKashida, ref matchDiacritics, ref matchAlefHamza,
                ref matchControl);

            range2 = range2.NextStoryRange;
        }
    }
}

调用代码:

foreach (KeyValuePair<string, string> sEntry in qirSummaryData)
{
    FindAndReplace(_mWordApp, sEntry.Key, sEntry.Value);
}

例如replaceWithText为字符串"13:48"时,Microsoft Word文档或pdf会改为1:48 pm

有谁知道我错过了什么?我假设Microsoft Word在事后已经应用了自己的时间格式,但我找不到如何以编程方式设置此格式,更不用说在Microsoft Word本身中找到它。

非常感谢帮助:)

0 个答案:

没有答案