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