チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.Doc for .NET»»C#:Word 文書から表を抽出する方法
2024-09-05

C#:Word 文書から表を抽出する方法

Word 文書内の表には、財務データや調査結果、統計記録など、貴重な情報が含まれていることがよくあります。これらの表に含まれるデータを抽出することで、詳細なデータ分析やトレンドの特定、他のツールやデータベースとのシームレスな統合など、さまざまな目的に活用できるチャンスが広がります。この記事では、C# を使用して、Spire.Doc for .NET を用いて Word 文書から表を抽出する方法を紹介します。

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 文書から表を抽出する方法

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();
        }
    }
}

C#:Word 文書から表を抽出する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 538 times