我正在尝试使用Office Interop向Word添加一些HTML格式的文本。我的代码如下所示:
Clipboard.SetText(notes, TextDataFormat.Html);
pgCriteria.Range.Paste();
但它正在抛出命令失败的异常。有什么想法吗?
答案 0 :(得分:3)
花了几个小时后,解决方案是使用这个优秀的课程 http://blogs.msdn.com/jmstall/pages/sample-code-html-clipboard.aspx
答案 1 :(得分:3)
这适用于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); }
答案 2 :(得分:0)
只需使用您的html内容构建一个临时html文件,然后将其插入如下。
// 1- Sample HTML Text
var Html = @"<h1>Sample Title</h1><p>Lorem ipsum dolor <b>his sonet</b> simul</p>";
// 2- Write temporary html file
var HtmlTempPath = Path.Combine(Path.GetTempPath(), $"{Path.GetRandomFileName()}.html");
File.WriteAllText(HtmlTempPath, $"<html>{Html}</html>");
// 3- Insert html file to word
ContentControl ContentCtrl = Document.ContentControls.Add(WdContentControlType.wdContentControlRichText, Missing);
ContentCtrl.Range.InsertFile(HtmlTempPath, ref Missing, ref Missing, ref Missing, ref Missing);
答案 3 :(得分:0)
在Word文档中添加html有点棘手。最好的方法是创建一个临时文件,然后将此文件插入单词的选定范围。诀窍是利用 Range 的 InsertFile 功能。这样一来,我们就可以通过将任意HTML字符串作为文件保存到磁盘上的临时位置来插入任意HTML字符串。
唯一的技巧是 必须是 文档。
我在我的一个项目中使用了类似的东西。
open class CustomEditText : TextInputEditText {
constructor(context: Context?) : super(context) {
disableCopyPastMenu()
}
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
disableCopyPastMenu()
}
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
disableCopyPastMenu()
}
}
添加
很重要charset ='utf-8'
否则,插入文件后,在html文件的开头,您可能会在Word文档中看到意外的字符。