我需要生成 doc(真正的 doc,而不是 docx)文件,我发现的“最佳”方式是使用 word 自动化(Word 2010)。我有我打开的文件,然后在将其保存为新名称之前替换其中的值。(例如:我将“CHRONO”替换为“155023”)。为此,我使用 Application.Selection.Find。当新值超过 255 个字符(微软的限制......)时,我遇到了问题。为了避免这个问题,我在这种情况下使用 TypeText。我现在的问题是一旦我使用 TypeText,替换不再起作用。我找不到原因。任何想法将不胜感激。
我的代码在一个函数中,在 foreach 中调用每个值来替换:
private void Replace(Application app, string name, string newValue)
{
Selection selection = app.Selection;
Find find = selection.Find;
Replacement replacement = find.Replacement;
find.ClearFormatting();
find.Text = "<" + name + ">";
// Word limitation : can't replace with more than 255 characters,
// use another way to do it if that's the case
if (tempNewValue.Length < 255)
{
replacement.ClearFormatting();
replacement.Text = tempNewValue;
find.Execute(Replace: replaceAll);
}
else
{
while (find.Execute())
{
selection.TypeText(tempNewValue);
}
}
Marshal.ReleaseComObject(replacement);
Marshal.ReleaseComObject(find);
Marshal.ReleaseComObject(selection);
}