从Word文档转换为HTML

时间:2010-02-15 13:10:05

标签: c# html ms-word

我想使用Word Viewer将Word文档保存为HTML而不在我的计算机中安装Word。有没有办法在C#中实现这个目标?

10 个答案:

答案 0 :(得分:19)

要将.docx文件转换为HTML格式,您可以使用OpenXmlPowerTools。确保添加对OpenXmlPowerTools.dll的引用。

using OpenXmlPowerTools;
using DocumentFormat.OpenXml.Wordprocessing;

byte[] byteArray = File.ReadAllBytes(DocxFilePath);
using (MemoryStream memoryStream = new MemoryStream())
{
     memoryStream.Write(byteArray, 0, byteArray.Length);
     using (WordprocessingDocument doc = WordprocessingDocument.Open(memoryStream, true))
     {
          HtmlConverterSettings settings = new HtmlConverterSettings()
          {
               PageTitle = "My Page Title"
          };
          XElement html = HtmlConverter.ConvertToHtml(doc, settings);

          File.WriteAllText(HTMLFilePath, html.ToStringNewLineOnAttributes());
     }
}

答案 1 :(得分:4)

您可以尝试使用 Microsoft.Office.Interop.Word;

   using Word = Microsoft.Office.Interop.Word;

    public static void ConvertDocToHtml(object Sourcepath, object TargetPath)
    {

        Word._Application newApp = new Word.Application();
        Word.Documents d = newApp.Documents;
        object Unknown = Type.Missing;
        Word.Document od = d.Open(ref Sourcepath, ref Unknown,
                                 ref Unknown, ref Unknown, ref Unknown,
                                 ref Unknown, ref Unknown, ref Unknown,
                                 ref Unknown, ref Unknown, ref Unknown,
                                 ref Unknown, ref Unknown, ref Unknown, ref Unknown);
        object format = Word.WdSaveFormat.wdFormatHTML;



        newApp.ActiveDocument.SaveAs(ref TargetPath, ref format,
                    ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown);

        newApp.Documents.Close(Word.WdSaveOptions.wdDoNotSaveChanges);


    }

答案 2 :(得分:1)

我认为这取决于Word文档的版本。如果您使用docx格式,我相信它们作为XML数据存储在文件中(但是我查看规范已经很久了,我很乐意对此进行更正)。

答案 3 :(得分:1)

我写了Mammoth for .NET,这是一个将docx文件转换为HTML的库,available on NuGet

Mammoth尝试通过查看语义信息来生成干净的HTML - 例如,将Word中的段落样式(例如Heading 1)映射到HTML / CSS中的适当标记和样式(例如<h1> )。如果你想要能产生精确视觉副本的东西,那么猛犸可能不适合你。如果你的某些内容已经结构良好,并希望将其转换为整洁的HTML,那么猛犸可能会做到这一点。

答案 4 :(得分:0)

根据this Stack Overflow question,单词查看器无法实现。您需要Word才能使用COM Interop与Word进行交互。

答案 5 :(得分:0)

如果您愿意不使用C#,您可以使用PrimoPDF(将.doc更改为.pdf)执行打印到文件之类的操作,然后使用PDF转换为HTML转换器其余的方式。之后,您可以编辑您喜欢的HTML。

答案 6 :(得分:0)

我得到的另一个类似话题是Convert Word to HTML then render HTML on webpage。我想如果你还在上面,你可能会觉得这很有帮助。这是一个免费分发的DLL。我在那里给出了链接。

答案 7 :(得分:0)

Gembox效果很好。甚至可以将Word文档中的图像转换为img标签中的base64编码的字符串。

答案 8 :(得分:-1)

我相信你需要安装MS Word才能做到这一点。

查看this article了解有关实施的详细信息。

答案 9 :(得分:-1)

使用OpenOffice.org中提供的文档转换工具可能是唯一可行的选项 - .doc格式只能通过Microsoft产品打开,因此任何处理它的库都需要对整个格式进行反向设计。 / p>