编程语言
首页 > 编程语言> > c#-将Word保存为UTF-8编码的HTML

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

作者:互联网

我正在编写一些C#VSTO代码,该代码读取Microsoft Word文档并将其保存到“过滤的HTML”中.当我在通用Word文档上执行此功能时,html文件的输出使用Windows Charset,如此处所示:

<meta http-equiv=Content-Type content="text/html; charset=windows-1252">

如果打开文档并转到“文件”->“选项”->“高级”->“ Web选项”,则可以选择UTF8,并且生成的经过过滤的html文档输出如下所示:

<meta http-equiv=Content-Type content="text/html; charset=utf-8">

我想编写将任何Word文档保存到使用utf-8过滤的html的c#代码.经过研究后,我发现有人说“ SaveAs2”功能不起作用(即使Microsoft将其记录为功能).这意味着此代码对我不起作用:

doc.SaveAs2("C:\\Temp\\Test.htm", MsWord.WdSaveFormat.wdFormatFilteredHTML, Encoding: "65001");

(注意:我尝试将65001用引号引起来,而没有引号.

接下来,我继续设置文档的网络选项,如下所示:

doc = app.Documents.Open("C:\\Temp\\Test.docx");
doc.WebOptions.Encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;
doc.SaveAs2(destFile, MsWord.WdSaveFormat.wdFormatFilteredHTML);

据我所知,上面的代码执行与我手动打开文件,转到文件->选项…,设置为UTF-8并将文件保存到过滤的html相同的功能,但输出仍然看起来像这样:

<meta http-equiv=Content-Type content="text/html; charset=windows-1252">

有没有一种方法可以强制Microsoft Word将文件输出到UTF-8,而不必先手动配置文档?

解决方法:

在撰写本文时,尚不清楚我是否在使用特定版本的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);

标签:encoding,utf-8,c,ms-word,vsto
来源: https://codeday.me/bug/20191027/1945946.html