チュートリアル

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

チュートリアル».NET»Spire.Doc for .NET»»C#/VB.NET:Word のテーブルに画像を挿入または抽出する方法
2023-01-18

C#/VB.NET:Word のテーブルに画像を挿入または抽出する方法

Word のテーブルには、テキストや画像など、さまざまな要素を含めることができます。場合によっては、画像をテーブルに挿入して情報を表示したり、他のドキュメントで使用するためにテーブルから画像を抽出したりすることがあります。この記事では、Spire.Doc for .NET を使用して、C# および VB.NET でプログラムによって Word でテーブルに画像を挿入または抽出する方法を示します。

Spire.Doc for .NET をインストールします

まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Doc

C# および VB.NET で Word のテーブルに画像を挿入する

Spire.Doc for .NET が提供する TableCell.Paragraphs[int].AppendPicture() メソッドは、特定のテーブルのセルに画像を追加することをサポートします。詳細な手順は次のとおりです。

  • Document のインスタンスを初期化します。
  • Document.LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • Document.Sections [int] プロパティを使用して、特定のセクションをインデックスで取得します。
  • Section.Tables[int] プロパティを使用して、セクション内の特定のテーブルをインデックスで取得します。
  • Table.Row[int].Cells[int] プロパティを使用して、特定のセルにアクセスします。
  • TableCell.Paragraphs[int].AppendPicture() メソッドを使用して、セルの特定の段落に画像を追加します
  • DocPicture.WidthDocPicture.Height プロパティを使用して、画像の幅と高さを設定します。
  • Document.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Doc;
using Spire.Doc.Fields;
using System.Drawing;

namespace InsertImagesIntoTable
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentのインスタンスを初期化する
            Document doc = new Document();
            //Wordドキュメントをロードする
            doc.LoadFromFile("Table.docx");

            //最初のセクションを取得する
            Section section = doc.Sections[0];

            //セクションから最初のテーブルを取得する
            Table table = (Table)section.Tables[0];

            //テーブルの2行目の3番目のセルに画像を追加する
            TableCell cell = table.Rows[1].Cells[2];
            DocPicture picture = cell.Paragraphs[0].AppendPicture(Image.FromFile("doc.png"));
            //画像の幅と高さを設定する
            picture.Width = 100;
            picture.Height = 100;
            //テーブルの3行目の3番目のセルに画像を追加する
            cell = table.Rows[2].Cells[2];
            picture = cell.Paragraphs[0].AppendPicture(Image.FromFile("xls.png"));
            //画像の幅と高さを設定する
            picture.Width = 100;
            picture.Height = 100;

            //結果ドキュメントを保存する
            doc.SaveToFile("AddImageToTable.docx", FileFormat.Docx2013);
        }
    }
}
Imports Spire.Doc
Imports Spire.Doc.Fields

Namespace InsertImagesIntoTable
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Documentのインスタンスを初期化する
            Dim doc As Document = New Document()
            'Wordドキュメントをロードする
            doc.LoadFromFile("Table.docx")

            ' 最初のセクションを取得する
            Dim section As Section = doc.Sections(0)

            'セクションから最初のテーブルを取得する
            Dim table As Table = CType(section.Tables(0), Table)

            'テーブルの2行目の3番目のセルに画像を追加する
            Dim cell As TableCell = table.Rows(1).Cells(2)
            Dim picture As DocPicture = cell.Paragraphs(0).AppendPicture(Image.FromFile("doc.png"))
            '画像の幅と高さを設定する
            picture.Width = 100
            picture.Height = 100
            'テーブルの3行目の3番目のセルに画像を追加する
            cell = table.Rows(2).Cells(2)
            picture = cell.Paragraphs(0).AppendPicture(Image.FromFile("xls.png"))
            '画像の幅と高さを設定する
            picture.Width = 100
            picture.Height = 100

            '結果ドキュメントを保存する
            doc.SaveToFile("AddImageToTable.docx", FileFormat.Docx2013)
        End Sub
    End Class
End Namespace

C#/VB.NET:Word のテーブルに画像を挿入または抽出する方法

C# および VB.NET で Word のテーブルから画像を抽出する

テーブルから画像を抽出するには、すべての行、各行のすべてのセル、各セルのすべての段落と各段落のすべてのサブオブジェクトをループします。次に、DocPicture タイプのオブジェクトを見つけ、DocPicture.Image.Save() メソッドを使用して指定したファイルパスに保存します。具体的な手順は次のとおりです。

  • Document のインスタンスを初期化します。
  • Document.LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • Document.Sections [int] プロパティを使用して、特定のセクションをインデックスで取得します。
  • Section.Tables[int] プロパティを使用して、セクション内の特定のテーブルをインデックスで取得します。
  • テーブル内のすべての行をループします。
  • 各行のすべてのセルをループします。
  • 各セルのすべての段落をループします。
  • 各段落のすべてのサブオブジェクトをループします。
  • 現在のサブオブジェクトが DocPicture タイプであるかどうかを確認します。
  • 結果が true の場合は、オブジェクトのタイプを DocPicture に変換し、DocPicture.Image.Save() メソッドを使用して指定したファイルパスに画像を保存します。
  • C#
  • VB.NET
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System;
using System.Drawing.Imaging;

namespace ExtractImagesFromTable
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentクラスを初期化する
            Document doc = new Document();
            //Wordドキュメントをロードする
            doc.LoadFromFile("AddImageToTable.docx");

            //最初のセクションを取得する
            Section section = doc.Sections[0];

            //セクションから最初のテーブルを取得する
            Table table = (Table)section.Tables[0];

            int index = 0;
            string imageName = null;

            //テーブル内のすべての行をループする 
            for (int i = 0; i < table.Rows.Count; i++)
            {
                //各行のすべてのセルをループする
                for (int j = 0; j < table.Rows[i].Cells.Count; j++)
                {
                    //各セル内のすべての段落をループする
                    foreach (Paragraph para in table[i, j].Paragraphs)
                    {
                        //各段落内のすべてのサブオブジェクトをループする
                        foreach (DocumentObject obj in para.ChildObjects)
                        {
                            //現在のサブオブジェクトがDocPictureタイプであるかどうかを確認する
                            if (obj is DocPicture)
                            {
                                //指定したファイルパスに画像を保存する
                                imageName = string.Format(@"images\TableImage-{0}.png", index);
                                (obj as DocPicture).Image.Save(imageName, ImageFormat.Png);
                                index++;
                            }
                        }
                    }
                }
            }
        }
    }
}
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.Drawing.Imaging

Namespace ExtractImagesFromTable
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Documentクラスを初期化する
            Dim doc As Document = New Document()
            ' Wordドキュメントをロードする
            doc.LoadFromFile("AddImageToTable.docx")

            'ドキュメントの最初のセクションを取得する
            Dim section As Section = doc.Sections(0)

            '最初のセクションから最初のテーブルを取得する
            Dim table As Table = CType(section.Tables(0), Table)

            Dim index = 0
            Dim imageName As String = Nothing

            'テーブル内のすべての行をループする 
            For i As Integer = 0 To table.Rows.Count - 1
                '各行のすべてのセルをループする
                For j As Integer = 0 To table.Rows(i).Cells.Count - 1
                    '各セル内のすべての段落をループする
                    For Each para As Paragraph In table(i, j).Paragraphs
                        '各段落内のすべてのサブオブジェクトをループする
                        For Each obj As DocumentObject In para.ChildObjects
                            '現在のサブオブジェクトがDocPictureタイプであるかどうかを確認する
                            If TypeOf obj Is DocPicture Then
                                '指定したファイルパスに画像を保存する
                                imageName = string.Format("images\TableImage-{0}.png", index)
                                TryCast(obj, DocPicture).Image.Save(imageName, ImageFormat.Png)
                                index += 1
                            End If
                        Next
                    Next
                Next
            Next
        End Sub
    End Class
End Namespace

C#/VB.NET:Word のテーブルに画像を挿入または抽出する方法

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

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

Read 540 times