Это сработало для меня в Windows 7 и Word 2007:
public static void pasteHTML(this Range range, string html) { Clipboard.SetData(
"HTML Format", string.Format("Version:0.9\nStartHTML:80\nEndHTML:{0,8}\nStart" +
"Fragment:80\nEndFragment:{0,8}\n", 80 + html.Length) + html + "<"); range.Paste(); }
Пример использования: range.pasteHTML("a<b>b</b>c");
Возможно, более надежный способ без использования буфера обмена - сохранить фрагмент HTML в файл и использовать InsertFile
. Что-то вроде:
public static void insertHTML(this Range range, string html) {
string path = System.IO.Path.GetTempFileName();
System.IO.File.WriteAllText(path, "<html>" + html); // must start with certain tag to be detected as html: <html> or <body> or <table> ...
range.InsertFile(path, ConfirmConversions: false);
System.IO.File.Delete(path); }