我正在编写一些C#VSTO代码,用于读取Microsoft Word文档并将其保存到Filtered HTML。当我在通用Word文档上执行此功能时,html文件的输出使用Windows Charset,如下所示:
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
如果我打开文档并转到文件 - >选项 - >高级 - >网页选项,我可以选择UTF8,生成的过滤后的html文档输出如下所示:
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
我想编写c#代码,将任何 Word文档保存到使用utf-8过滤的html。在做了一些研究后,我发现有些人说&#34; SaveAs2&#34;功能不起作用(即使Microsoft将其记录为功能)。这意味着,此代码对我不起作用:
doc.SaveAs2("C:\\Temp\\Test.htm", MsWord.WdSaveFormat.wdFormatFilteredHTML, Encoding: "65001");
(注意:我尝试将65001放在引号中并且没有引号..既不会抛出错误,也不会起作用。)
接下来,我继续设置文档的Web选项,如下所示:
doc = app.Documents.Open("C:\\Temp\\Test.docx");
doc.WebOptions.Encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;
doc.SaveAs2(destFile, MsWord.WdSaveFormat.wdFormatFilteredHTML);
据我所知,上面的代码执行的功能与我手动打开文件,转到file-&gt; options ...,设置为UTF-8并将文件保存到已过滤的html完全相同,但是输出仍然如下:
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
有没有办法强制Microsoft Word将文件输出到UTF-8而无需先手动配置文档?
答案 0 :(得分:4)
在撰写本文时,尚不清楚我是否遇到了我的特定版本的Microsoft Word(Word Online)或VSTO模板的错误,但我会在这里回答是什么让我的工作。
如果此代码不起作用:
doc = app.Documents.Open("C:\\Temp\\Test.docx");
doc.WebOptions.Encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;
doc.SaveAs2("C:\\Temp\\Test.htm", MsWord.WdSaveFormat.wdFormatFilteredHTML);
然后,更改代码以刷新文档的字段,如下所示:
doc = app.Documents.Open("C:\\Temp\\Test.docx");
doc.Fields.Update(); // ** this is the new line of code.
doc.WebOptions.Encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;
doc.SaveAs2("C:\\Temp\\Test.htm", MsWord.WdSaveFormat.wdFormatFilteredHTML);
答案 1 :(得分:0)
在Visual Studio中,您必须添加参考:
在您的项目中:
'MyProject'>解决方案资源管理器>参考>添加参考> COM> Microsoft Office 16.0对象库
VS给出了一个非常隐秘的错误,实际上并没有帮助找到lib。