将Word保存为UTF-8编码的HTML

时间:2015-12-01 17:46:14

标签: c# encoding utf-8 ms-word vsto

我正在编写一些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而无需先手动配置文档?

2 个答案:

答案 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。