Word と Excel は、それぞれ異なる種類のコンテンツ向けに設計されています。Word は文書作成に重点を置いているのに対し、Excel は構造化データの管理や分析に適しています。そのため、同じコンテンツを両方の形式で扱うのは、必ずしも簡単ではありません。 Word 文書内のデータを Excel で表示または処理したい場合、手動での変換は手間がかかります。Spire.Doc for .NET を使用すれば、Word から Excel へ直接変換でき、データをそのまま Excel で活用できます。 このチュートリアルでは、C# を使用して Word を Excel に変換する方法 を学びます。 Spire.Doc for .NET のインストール C# における基本的な Word から Excel への変換 応用的な Word から Excel への変換シナリオ Word の表のみを Excel に変換する Word 文書の特定のページを Excel に変換する 複数の Word 文書を Excel に一括変換する 注意点とベストプラクティス よくある質問(FAQs) 一時ライセンスを申請する Spire.Doc for .NET のインストール 最初に、Spire.Doc for .NET パッケージに含まれる DLL ファイルを、.NET プロジェクトの参照として追加する必要があります。DLL ファイルは、こちらのリンクからダウンロードするか、NuGet 経由でインストールできます。 PM> Install-Package Spire.Doc C# における基本的な Word から Excel への変換 Spire.Doc を使用した Word から Excel への変換は非常にシンプルです。 Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。 Document.SaveToFile() メソッドを使用して、文書を Excel ファイルとして保存します。 この方法は、Word 文書に構造化されたコンテンツ、特に表が含まれている場合に最適です。表はスプレッドシートのセルに自然にマッピングされます。 using Spire.Doc; namespace WordToExcel { class Program { static void Main(string[] args) { // Word 文書を読み込む Document document = new Document(); document.LoadFromFile("G:/Documents/Sample.docx"); // Excel として保存する document.SaveToFile("G:/Documents/Sample.xlsx", FileFormat.XLSX); document.Dispose(); } } } 出力結果: 適切に変換される要素 Word から Excel に変換する際には、コンテンツがどのように解釈されるかを理解することが重要です。 Word 内の表は、行と列が保持された状態で Excel ワークシートに変換されます。 段落テキストはセルに挿入される可能性がありますが、厳密な構造は維持されない場合があります。 複雑なレイアウト(浮動要素、段組みセクションなど)は、完全には再現されない場合があります。 デフォルトでは、Word 文書内の各**セクション(Section)**は、Excel の個別のワークシート(Worksheet)に変換されます。 最良の結果を得るには、変換前に Word 文書内で明確な表構造を使用することを推奨します。 応用的な Word から Excel への変換シナリオ 基本的な変換プロセスを理解した上で、必要に応じてより高度なシナリオに対応できます。 Word の表のみを Excel に変換する 構造化データのみが必要な場合は、文書全体を変換するよりも、Word 文書から表を抽出する方が有用です。デフォルトでは、同じセクション内のすべての表は単一のワークシートに配置されます。各表を個別のワークシートに出力するには、変換前に各表をそれぞれ独自のセクションに配置します。 これを行うには、文書構造と表オブジェクトを操作します。 section.Tables を使用して、セクション内のすべての表にアクセスします。 table.Clone() を使用して、各表のコピーを作成します。 各表に対して新しいセクションを作成し、Excel 出力時に個別のワークシートにマッピングされるようにします。 このアプローチにより、出力を正確に制御し、必要なデータだけを Excel ファイルに含めることができます。 using Spire.Doc; class Program { static void Main() { // Word 文書を読み込む Document doc = new Document(); doc.LoadFromFile("G:/Documents/Sample84.docx"); // 抽出した表を格納するための新しい文書を作成する Document tempDoc = new Document(); // ソース文書内のすべてのセクションをループ処理する foreach (Section section in doc.Sections) { // 現在のセクション内のすべての表をループ処理する foreach (Table table in section.Tables) { // 各表に対して新しいセクションを作成する (各セクションは Excel の個別ワークシートになる) Section tempSec = tempDoc.AddSection(); // 表をクローンし、新しいセクションに追加する tempSec.Tables.Add(table.Clone()); } } // Excel として保存する tempDoc.SaveToFile("Tables.xlsx", FileFormat.XLSX); // リソースを解放する doc.Dispose(); tempDoc.Dispose(); } } 注: 変換前に各表が独自のセクションに配置されるため、出力される Excel ファイルでは各表が個別のワークシートに表示されます。 Word 文書の特定のページを Excel に変換する 特定のページ(例:2ページ目の集計表)にのみ必要なデータが含まれている場合があります。そのような場合は、Document.ExtractPages() を使用して変換前に該当ページを新しい Document オブジェクトに分離します。これにより、文書全体を処理する必要がなくなり、よりクリーンで焦点を絞った出力が得られます。 using Spire.Doc; namespace WordPageToExcel { class Program { static void Main(string[] args) { // Word 文書を読み込む Document document = new Document(); document.LoadFromFile("input.docx"); // 指定されたページのコンテンツを抽出する (例: 2ページ目) Document pageDoc = document.ExtractPages(1, 1); // 2ページ目を取得(インデックスは0から開始、1ページ分を抽出) // 抽出したページを Excel として保存する pageDoc.SaveToFile("output.xlsx", FileFormat.XLSX); document.Dispose(); pageDoc.Dispose(); } } } 注: Word におけるページ区切りはフローレイアウトに基づいているため、フォントレンダリングによって変動する可能性があります。抽出結果が Word 上の表示と一致しない場合は、対象ページ付近のインデックスを調整して確認してください。 複数の Word 文書を Excel に一括変換する フォルダ内の Word ファイル全体を変換するには、各 .docx ファイルに対してループ処理を行い、同様の変換を適用します。これは、一括移行やスケジュールされた処理パイプラインに有用です。 このアプローチは、バックグラウンドジョブや自動化ワークフローに容易に統合できます。 using Spire.Doc; using System.IO; namespace BatchWordToExcel { class Program { static void Main(string[] args) { // 入力フォルダからすべての Word ファイルを取得する string inputFolder = "inputDocs"; string outputFolder = "outputExcels"; Directory.CreateDirectory(outputFolder); string[] wordFiles = Directory.GetFiles(inputFolder, "*.docx"); // 各 Word ファイルをループ処理し、Excel に変換する foreach (string filePath in wordFiles) { Document document = new Document(); document.LoadFromFile(filePath); string fileName = Path.GetFileNameWithoutExtension(filePath); string outputPath = Path.Combine(outputFolder, fileName + ".xlsx"); document.SaveToFile(outputPath, FileFormat.XLSX); document.Dispose(); } } } } ヒント: 大量のファイルを処理する場合は、内部ブロックを try/catch でラップすることで、単一の不正なファイルによって処理全体が中断されるのを防ぐことを検討してください。ワークフローで変換前に文書を結合する必要がある場合は、C# で Word 文書をマージする方法 を参照してください。 注意点とベストプラクティス 最良の結果を得るには、Word で適切に構造化された表を使用してください。 浮動図形や段組みデザインのような複雑なレイアウトは避けてください。 大規模処理の場合は、メモリ使用量を最適化するためにバッチ処理を検討してください。 よくある質問 Q1:変換がサポートされている Word ファイル形式は何ですか? Spire.Doc for .NET は、入力として .doc 形式と .docx 形式の両方をサポートしています。Document.LoadFromFile() を使用していずれかの形式を読み込むことができ、残りの処理はライブラリが自動的に行います。 Q2:変換後も元の書式設定は保持されますか? 変換は、コンテンツをスプレッドシート形式にエクスポートすることに焦点を当てています。表のような構造化されたコンテンツは通常、良好な可読性で保持されますが、複雑なレイアウトは Word とまったく同じには保持されない場合があります。 Q3:この機能は大きな文書に適していますか? はい。ただし、パフォーマンスは文書のサイズと複雑さによって異なる場合があります。大きなファイルの場合は、コード内でメモリ使用量を最適化し、効率的に文書を処理することを推奨します。 Q4:変換後に Excel 出力をさらにカスタマイズできますか? はい。変換された .xlsx ファイルを保存した後、Spire.XLS for .NET で開いて、セルスタイル、フォント、色、列幅の調整、または数式の追加など、出力をさらにカスタマイズできます。これら2つのライブラリはシームレスに連携するように設計されています。 まとめ この記事では、Spire.Doc for .NET を使用して C# で Word を Excel に変換する方法を、基本的な文書変換からページ抽出や表中心の処理といった高度なシナリオまで学習しました。フォント、色、セル書式の調整など、出力に対するより詳細な制御が必要な場合は、Spire.XLS for .NET と組み合わせて使用できます。 また、Word 文書を PDF、HTML、または画像にエクスポートするなど、他の変換機能もご覧いただけます。 一時ライセンスを申請する 評価メッセージの削除や機能制限の解除をご希望の場合は、営業担当者までお問い合わせのうえ、30日間有効な一時ライセンスを取得してください。