.NETとC#でWord文書をHTML形式に変換する方法

Word文書をHTML形式に変換することには多くの利点があります。特に、複数のデバイスやプラットフォームで一貫して柔軟に表示できることや、Web経由での配信やさまざまなWebアプリケーションへの統合が容易になる点が挙げられます。企業や開発者がより柔軟で互換性の高いファイル処理方法を求める中、.NETフレームワークのC#はその強力な相互運用性によって、この変換を実現する理想的な選択肢となっています。本記事では、.NET環境で**C#を使用してWord文書をHTMLファイルに変換する方法**を紹介します。

- C#を使ってWord文書を一般的なHTML形式に変換する方法
- C#を使ってWord文書を単一のHTMLファイルに変換する方法
- 変換時にカスタマイズオプションを設定する方法

本記事では、無料の[Free Spire.Doc for .NET](https://jp.e-iceblue.com/introduce/free-spire-doc-for-net.html)を使用します。NuGetからインストールするには、以下のコマンドを実行してください：
`PM> Install-Package FreeSpire.Doc`

## C#でWord文書を一般的なHTML形式に変換する方法
`Document.LoadFromFile`メソッドでWord文書を読み込み、`SaveToFile(string:fileName, FileFormat.HTML)`メソッドでHTML形式に変換して保存できます。この方法で変換すると、HTMLファイル、CSSファイル、画像フォルダー（文書に画像が含まれている場合）が生成されます。以下に手順を示します。

1. 必要なモジュールをインポート。
2. `Document`インスタンスを作成。
3. `Document.LoadFromFile()`メソッドでWord文書を読み込み。
4. `Document.SaveToFile(string:fileName, FileFormat.HTML)`メソッドでHTML形式に変換して保存。

**コード例**
```csharp
using Spire.Doc;

namespace WordToHTML
{
    class Program
    {
        static void Main(string[] args)
        {
            // Documentインスタンスを作成
            using (Document doc = new Document())
            {
                // Word文書を読み込む
                doc.LoadFromFile("Sample.docx");

                // HTMLに変換して保存
                doc.SaveToFile("output/WordToHTML.html", FileFormat.Html);
            }
        }
    }
}
```

結果
![2025-01-17_174401.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/30d0d1ab-adff-1990-7a66-a93cd20e41e8.png)

## C#でWord文書を単一のHTMLファイルに変換する方法
`Document.HtmlExportOptions.CssStyleSheetType`と`Document.HtmlExportOptions.ImageEmbedded`プロパティを設定することで、CSSと画像を単一のHTMLファイルに埋め込むことができます。以下に手順を示します。

1. 必要なモジュールをインポート。
2. `Document`インスタンスを作成。
3. `Document.LoadFromFile()`メソッドでWord文書を読み込み。
4. `Document.HtmlExportOptions.CssStyleSheetType`を`CssStyleSheetType.Internal`に設定して、CSSスタイルをHTML内に埋め込み。
5. `Document.HtmlExportOptions.ImageEmbedded`を`true`に設定して、画像をHTML内に埋め込み。
6. `Document.SaveToFile(string:fileName, FileFormat.HTML)`メソッドでHTML形式に変換して保存。

**コード例**
```csharp
using Spire.Doc;

namespace WordToHTML
{
    class Program
    {
        static void Main(string[] args)
        {
            // Documentインスタンスを作成
            using (Document doc = new Document())
            {
                // Word文書を読み込む
                doc.LoadFromFile("Sample.docx");

                // CSSを埋め込む設定
                doc.HtmlExportOptions.CssStyleSheetType = CssStyleSheetType.Internal;

                // 画像を埋め込む設定
                doc.HtmlExportOptions.ImageEmbedded = true;

                // HTMLに変換して保存
                doc.SaveToFile("output/WordToHTMLEmbedded.html", FileFormat.Html);
            }
        }
    }
}
```

結果
![2025-01-17_174624.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/a4dd66a2-17f1-f7eb-2b38-3de270e5a900.png)

## 変換時のカスタマイズオプション
`Document.HtmlExportOptions`プロパティを使用して、さらに細かい変換オプションを設定できます。以下は、サポートされているオプションの情報です。

| プロパティ                            | 説明                                                         |
|-------------------------------------|------------------------------------------------------------|
| CssStyleSheetType                   | HTML CSSスタイルシートのタイプ（外部または内部）を指定。              |
| CssStyleSheetFileName               | HTML CSSスタイルシートファイル名を指定。                           |
| ImageEmbedded                       | 画像をHTMLコード内にデータURI形式で埋め込むかどうかを指定。         |
| ImagesPath                          | HTML内で使用する画像の保存先フォルダーパスを指定。                   |
| UseSaveFileRelativePath             | 画像のファイルパスがHTMLファイルのパスに対して相対パスであるかどうかを指定。 |
| HasHeadersFooters                   | HTMLにヘッダーとフッターを含めるかどうかを指定。                     |
| IsTextInputFormFieldAsText          | テキスト入力フォームフィールドをHTML内にテキストとしてエクスポートするかどうかを指定。 |
| IsExportDocumentStyles              | ドキュメントスタイルをHTMLの`<head>`セクションにエクスポートするかどうかを指定。 |

以下は操作手順の例です。

1. 必要なモジュールをインポート。
2. `Document`インスタンスを作成。
3. `Document.LoadFromFile()`メソッドでWord文書を読み込み。
4. `Document.HtmlExportOptions`のプロパティで変換オプションをカスタマイズ。
5. `Document.SaveToFile(string:fileName, FileFormat.HTML)`メソッドでHTML形式に変換して保存。

**コード例**
```csharp
using Spire.Doc;

namespace WordToHTML
{
    class Program
    {
        static void Main(string[] args)
        {
            // Documentインスタンスを作成
            using (Document doc = new Document())
            {
                // Word文書を読み込む
                doc.LoadFromFile("Sample.docx");

                // CSSファイル名を設定
                doc.HtmlExportOptions.CssStyleSheetType = CssStyleSheetType.External;
                doc.HtmlExportOptions.CssStyleSheetFileName = "CustomCSSFileName.css";

                // 画像を埋め込まず、画像フォルダーを設定
                doc.HtmlExportOptions.ImageEmbedded = false;
                doc.HtmlExportOptions.UseSaveFileRelativePath = true;
                doc.HtmlExportOptions.ImagesPath = "Images/";

                // 文書スタイルをhead部分にエクスポート
                doc.HtmlExportOptions.IsExportDocumentStyles = true;

                // HTMLに変換して保存
                doc.SaveToFile("output/WordToHTMLEmbedded.html", FileFormat.Html);
            }
        }
    }
}
```

結果
![2025-01-17_175438.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/4c0e059a-1c21-dd77-9221-14f90ae3320c.png)

---

本文中で使用したWord文書のサンプル：

![2025-01-17_174115.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/bfd80e70-3546-3e17-b384-3114c03e5b7d.png)


この記事では、.NET環境でC#を使用してWord文書をHTML形式に変換し、変換オプションを設定する方法を紹介しました。