C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# HTML互转Word

C#代码实现将HTML转Word或者Word转HTML

作者:秋天的落叶铺满小路

HTML作为Web内容的标准格式,与Word这种通用的办公文档格式之间的相互转换,是许多企业级应用中的常见需求,下面我们就来看看如何使用 Spire.Doc for .NET 和 C# 代码轻松实现 HTML 与 Word 之间的相互转换吧

HTML作为Web内容的标准格式,与Word这种通用的办公文档格式之间的相互转换,是许多企业级应用中的常见需求。无论是将数据库中的动态内容生成为Word报告,还是将现有的Word文档发布为网页,掌握高效的转换方法都能显著提升工作效率。

本文将介绍如何使用 Spire.Doc for .NET 这个专业的文档处理组件,通过 C# 代码轻松实现 HTML 与 Word 之间的相互转换。

为什么选择 Spire.Doc for .NET?

.NET 框架本身并不原生支持 Word 或 HTML 文档的操作与转换。虽然也有其他开源方案(如 HtmlAgilityPack 搭配 OpenXML SDK),但往往需要开发者手动处理大量细节,且在样式保留、图片嵌入等方面存在不足。

Spire.Doc for .NET 则提供了一个强大且易用的 API,无需在服务器上安装 Microsoft Office 即可完成文档的创建、编辑和转换。它在转换质量上表现出色:

准备工作:安装 Spire.Doc

在开始编码之前,首先需要在项目中添加 Spire.Doc 的引用。推荐通过 NuGet 包管理器控制台执行以下命令来安装:

Install-Package Spire.Doc

场景一:将 HTML 字符串转换为 Word

这种场景非常灵活,适用于从数据库、API 接口或其他动态数据源获取 HTML 内容,并即时生成 Word 文档。

以下代码演示了如何读取一个 HTML 文件的内容(作为字符串),然后将其转换为一个 .docx 文件:

using Spire.Doc;
using Spire.Doc.Documents;
using System.IO;
namespace ConvertHtmlStringToWord
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 创建 Document 对象
            Document document = new Document();
            // 2. 添加一个节(Section)
            Section section = document.AddSection();
            // 可选:设置页面边距
            section.PageSetup.Margins.All = 2;
            // 3. 添加一个段落(Paragraph)
            Paragraph paragraph = section.AddParagraph();
            // 4. 从文件读取 HTML 字符串
            string htmlFilePath = @"C:\Users\Administrator\Desktop\Html.html";
            string htmlString = File.ReadAllText(htmlFilePath, System.Text.Encoding.UTF8);
            // 5. 将 HTML 字符串追加到段落中
            paragraph.AppendHTML(htmlString);
            // 6. 保存为 Word 文档
            document.SaveToFile("AddHtmlStringToWord.docx", FileFormat.Docx);
            // 7. 释放资源
            document.Dispose();
        }
    }
}

核心方法解析 :

场景二:将 HTML 文件直接转换为 Word

如果你已经有一个现成的 HTML 文件,希望直接将其转换为 Word 文档,代码会更加简洁:

using Spire.Doc;
namespace ConvertHtmlToWord
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 创建 Document 对象
            Document document = new Document();
            // 2. 直接加载 HTML 文件
            document.LoadFromFile(@"C:\Users\Administrator\Desktop\MyHtml.html", FileFormat.Html);
            // 3. 保存为 Word 文档
            document.SaveToFile("HtmlToWord.docx", FileFormat.Docx);
            // 4. 释放资源
            document.Dispose();
        }
    }
}

这种方式一步到位,Document.LoadFromFile() 方法直接支持加载 FileFormat.Html 格式的文件,省去了手动读取文件内容的步骤。

关键注意事项

在实际使用中,有几个方面需要留意以确保转换效果最佳:

  1. CSS 样式支持 :Spire.Doc 支持大多数常见的 CSS 样式,如 font-sizecolortext-align 等。但对于一些非常复杂的 CSS 布局,转换结果可能会有细微差异。
  2. 图片路径 :HTML 中的 <img> 标签会被自动转换为 Word 中的图片。但请确保图片的路径(无论是本地路径还是网络 URL)在转换时是可访问的。
  3. 表格布局 :对于结构复杂的表格,建议避免使用 table-layout: fixed 等特殊布局属性,以保证转换后的表格在 Word 中显示正确。
  4. 性能 :对于包含大量内容或高清图片的大文件,建议在后台线程或异步任务中执行转换,避免阻塞主线程。

知识扩展

在 C# 中将 HTML 与 Word 文档互转,主要有三类方案:商业库、开源库和官方底层库。选择哪种方案取决于你的项目预算、功能需求和运行环境。

方案一:Aspose.Words(推荐,功能最全面)

Aspose.Words 是处理 Word 文档的行业标准库,API 简洁,转换质量高。

安装

Install-Package Aspose.Words

HTML 转 Word

using Aspose.Words;

// 加载 HTML 文件,直接转换为 Word 文档
var doc = new Document("Input.html");
doc.Save("Output.docx");

只需两行核心代码即可完成转换。

Word 转 HTML

using Aspose.Words;
// 加载 Word 文档,保存为 HTML
var doc = new Document("Input.docx");
doc.Save("Output.html");

方案二:Syncfusion DocIO(功能强大,有免费版)

Syncfusion 的 DocIO 库支持 HTML 与 Word 双向转换,并提供 XHTML 验证选项。

安装

Install-Package Syncfusion.DocIO.Net.Core

HTML 转 Word

using Syncfusion.DocIO;
using Syncfusion.DocIO.DLS;

// 加载 HTML 文件并转换为 Word 文档
using (WordDocument document = new WordDocument("Input.html", FormatType.Html))
{
    document.Save("Output.docx", FormatType.Docx);
}

支持通过 XHTMLValidationType 控制 HTML 验证的严格程度。

Word 转 HTML(含图片)

using Syncfusion.DocIO;
using Syncfusion.DocIO.DLS;

using (WordDocument document = new WordDocument("Input.docx"))
{
    // 将图片以 Base64 嵌入 HTML
    document.SaveOptions.HTMLExportImageAsBase64 = true;
    
    HTMLExport export = new HTMLExport();
    export.SaveAsXhtml(document, "Output.html");
}

此方式可将 Word 中的图片自动转为 Base64 格式嵌入 HTML。

方案三:GroupDocs.Conversion(专为转换设计)

GroupDocs.Conversion 专注于文档格式转换,API 设计清晰。

安装

Install-Package GroupDocs.Conversion

HTML 转 Word

using GroupDocs.Conversion;
using GroupDocs.Conversion.Options.Convert;

string inputFile = "Input.html";
string outputFile = "Output.docx";

using (var converter = new Converter(inputFile))
{
    var options = new WordProcessingConvertOptions();
    converter.Convert(outputFile, options);
}

可通过 WordProcessingConvertOptions 配置输出格式(DOC/DOCX)。

方案四:HtmlToOpenXml(开源免费,仅 HTML→Word)

这是一个轻量级的开源库,适合只需将 HTML 转换为 Word 的场景。

安装

Install-Package HtmlToOpenXml

HTML 转 Word

using DocumentFormat.OpenXml.Packaging;
using HtmlToOpenXml;

string htmlContent = "&lt;h1&gt;标题&lt;/h1&gt;&lt;p&gt;段落内容&lt;/p&gt;";

using (MemoryStream stream = new MemoryStream())
{
    // 创建 Word 文档
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(stream, DocumentFormat.OpenXml.WordprocessingDocumentType.Document))
    {
        var mainPart = wordDoc.AddMainDocumentPart();
        mainPart.Document = new DocumentFormat.OpenXml.Wordprocessing.Document();
        mainPart.Document.Body = new DocumentFormat.OpenXml.Wordprocessing.Body();

        // 将 HTML 转换为 Word 内容
        var converter = new HtmlConverter(mainPart);
        converter.ParseHtml(htmlContent);
    }

    File.WriteAllBytes("Output.docx", stream.ToArray());
}

该库支持常见的 HTML 标签(标题、段落、表格、图片等),但 <script><style> 等标签会被忽略。

总结

通过 Spire.Doc for .NET,开发者可以用极少的代码量,在 C# 项目中实现高质量、高保真的 HTML 与 Word 互转。无论是处理动态生成的 HTML 字符串,还是批量转换现有的 HTML 文件,这个库都提供了一个稳定、高效的解决方案,能够帮助你快速构建文档自动化处理流程,将精力更多地投入到业务逻辑本身。

到此这篇关于C#代码实现将HTML转Word或者Word转HTML的文章就介绍到这了,更多相关C# HTML互转Word内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文