从 XML 到 OOXML,再到 Interop,确实有很多可能的变体。
一种是使用剪贴板来做到这一点。
string html = Clipboard.GetText(TextDataFormat.Html);
您可以在其中操作您的 html 字符串,同时将您想要的任何 html 代码发送到剪贴板。
//save the html content to a file
File.WriteAllText(temporaryFilePath, html);
您可以将其保存在一个文件中并打开该文件,您将在浏览器中看到 html 代码的真正转换。
如果您现在想在 Word 中实现它,您可以使用以下命令插入该文件内容:
s.Range.InsertFile(temporaryFilePath);
如果您想浏览所有文档,您可以使用循环并检查特定位置替换
foreach (NetOffice.WordApi.InlineShape s in docWord.InlineShapes)
{
if (s.Type==NetOffice.WordApi.Enums.WdInlineShapeType.wdInlineShapePicture && s.AlternativeText.Contains("|"))
{
//save the html content to a file
File.WriteAllText(temporaryFilePath, html);
s.Range.InsertFile(temporaryFilePath);
}
}
这是一种将 HTML 集成到 Word 中的方法。另一种方式,丑陋的方式,是将您的 html 代码转换为图片并插入图片,我不会推荐那个。如果您打算为 Excel 扩展它,它的工作方式相同,如果您尝试将 html 实现到 Powerpoint 中,它将无法工作,但您可以分两步完成。首先将您的html粘贴到Excel中,选择粘贴的内容并将其粘贴到Powerpoint中,它可以正常工作。如果您粘贴一个表格,没问题,只需执行此操作,稍后,您将编写第二个循环来创建一个新表格,而不是从 Excel 中获取的那个表格。
编辑:根据您的主要错误,您应该添加:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
这个问题可以在这里回溯:C# WinForms: How to set Main function STAThreadAttribute