Word 文書内の表には、財務データや調査結果、統計記録など、貴重な情報が含まれていることがよくあります。これらの表に含まれるデータを抽出することで、詳細なデータ分析やトレンドの特定、他のツールやデータベースとのシームレスな統合など、さまざまな目的に活用できるチャンスが広がります。この記事では、C# を使用して、Spire.Doc for .NET を用いて Word 文書から表を抽出する方法を紹介します。 C# で Word 文書から表を抽出する C# で Word 文書から Excel ファイルに表を抽出する Spire.Doc for .NET をインストールします まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。 PM> Install-Package Spire.Doc C# で Word 文書から表を抽出する Spire.Doc for .NET では、Section.Tables プロパティを使用して、Word 文書のセクションに含まれる表にアクセスできます。このプロパティは、各セクション内の表を表す ITable オブジェクトのコレクションを返します。ITable オブジェクトを取得したら、各行やセルを繰り返し処理し、cell.Paragraphs[index].Text プロパティを使用して各セルのテキスト内容を取得します。表を抽出する手順は以下の通りです: Document クラスのオブジェクトを作成し、Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。 文書内のセクションを繰り返し処理し、Section.Tables プロパティを通じて各セクションの表コレクションを取得します。 各セクションの表を繰り返し処理し、各表の内容を保存するための文字列オブジェクトを作成します。 各表の行と各行内のセルを繰り返し処理し、TableCell.Paragraphs[index].Text プロパティを使用して各セルのテキストを取得し、そのテキストを文字列に追加します。 各文字列をテキストファイルに保存します。 C# using Spire.Doc; using Spire.Doc.Collections; using Spire.Doc.Interface; using System.IO; using System.Text; namespace ExtractWordTable { internal class Program { static void Main(string[] args) { // Documentクラスのオブジェクトを作成 Document doc = new Document(); // Word文書をロード doc.LoadFromFile("Sample.docx"); // 文書内のセクションを反復処理 for (int sectionIndex = 0; sectionIndex < doc.Sections.Count; sectionIndex++) { // 現在のセクションを取得 Section section = doc.Sections[sectionIndex]; // セクションのテーブルコレクションを取得 TableCollection tables = section.Tables; // セクション内のテーブルを反復処理 for (int tableIndex = 0; tableIndex < tables.Count; tableIndex++) { // 現在のテーブルを取得 ITable table = tables[tableIndex]; // テーブルデータを格納する文字列を初期化 string tableData = ""; // テーブル内の行を反復処理 for (int rowIndex = 0; rowIndex < table.Rows.Count; rowIndex++) { // 現在の行を取得 TableRow row = table.Rows[rowIndex]; // 行内のセルを反復処理 for (int cellIndex = 0; cellIndex < row.Cells.Count; cellIndex++) { // 現在のセルを取得 TableCell cell = table.Rows[rowIndex].Cells[cellIndex]; // セル内のテキストを取得 string cellText = ""; for (int paraIndex = 0; paraIndex < cell.Paragraphs.Count; paraIndex++) { cellText += (cell.Paragraphs[paraIndex].Text.Trim() + " "); } // テキストを文字列に追加 tableData += cellText.Trim(); if (cellIndex < table.Rows[rowIndex].Cells.Count - 1) { tableData += "t"; } } // 改行を追加 tableData += "n"; } // テーブルデータをテキストファイルに保存 string filePath = Path.Combine("Tables", $"Section{sectionIndex + 1}_Table{tableIndex + 1}.txt"); File.WriteAllText(filePath, tableData, Encoding.UTF8); } } doc.Close(); } } } C# で Word 文書から Excel ファイルに表を抽出する 抽出した表データをテキストファイルに保存するだけでなく、Spire.XLS for .NET ライブラリを使用して Excel ワークシートに直接書き込むこともできます。Spire.XLS for .NET を使用する前に、NuGet を介してインストールする必要があります: Install-Package Spire.XLS Word 文書から Excel ワークシートに表を抽出する手順は以下の通りです: Document クラスのオブジェクトを作成し、Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。 Workbook クラスのオブジェクトを作成し、Workbook.Worksheets.Clear() メソッドを使用してデフォルトのワークシートをクリアします。 文書内のセクションを繰り返し処理し、Section.Tables プロパティを通じて各セクションの表コレクションを取得します。 各セクション内の表を繰り返し処理し、Workbook.Worksheets.Add() メソッドを使用して、各表ごとにワークシートをブックに追加します。 各表の行と各行内のセルを繰り返し処理し、TableCell.Paragraphs[index].Text プロパティを使用して各セルのテキストを取得し、Worksheet.SetCellValue() メソッドを使用してワークシートにテキストを書き込みます。 Workbook.SaveToFile() メソッドを使用してワークブックを保存します。 C# using Spire.Doc; using Spire.Doc.Interface; using Spire.Xls; namespace ExtractWordTableToExcel { internal class Program { static void Main(string[] args) { // Documentクラスのオブジェクトを作成 Document doc = new Document(); // Word文書をロード doc.LoadFromFile("Sample.docx"); // Workbookクラスのオブジェクトを作成 Workbook wb = new Workbook(); // デフォルトのワークシートを削除 wb.Worksheets.Clear(); // 文書内のセクションを反復処理 for (int sectionIndex = 0; sectionIndex < doc.Sections.Count; sectionIndex++) { // 現在のセクションを取得 Section section = doc.Sections[sectionIndex]; // セクション内のテーブルを反復処理 for (int tableIndex = 0; tableIndex < section.Tables.Count; tableIndex++) { // 現在のテーブルを取得 ITable table = section.Tables[tableIndex]; // ワークブックにワークシートを追加 Worksheet ws = wb.Worksheets.Add($"Section{sectionIndex + 1}_Table{tableIndex + 1}"); // テーブル内の行を反復処理 for (int rowIndex = 0; rowIndex < table.Rows.Count; rowIndex++) { // 現在の行を取得 TableRow row = table.Rows[rowIndex]; // 行内のセルを反復処理 for (int cellIndex = 0; cellIndex < row.Cells.Count; cellIndex++) { // 現在のセルを取得 TableCell cell = row.Cells[cellIndex]; // セル内のテキストを取得 string cellText = ""; for (int paraIndex = 0; paraIndex < cell.Paragraphs.Count; paraIndex++) { cellText += (cell.Paragraphs[paraIndex].Text.Trim() + " "); } // セルのテキストをワークシートに書き込む ws.SetCellValue(rowIndex + 1, cellIndex + 1, cellText); } // ワークシート内の列幅を自動調整 ws.Range.AutoFitColumns(); } } } // ワークブックをExcelファイルに保存 wb.SaveToFile("Tables/Wordの表をExcelに抽出.xlsx", ExcelVersion.Version2016); doc.Close(); wb.Dispose(); } } } 一時ライセンスを申請する 結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。