Word のテーブルには、テキストや画像など、さまざまな要素を含めることができます。場合によっては、画像をテーブルに挿入して情報を表示したり、他のドキュメントで使用するためにテーブルから画像を抽出したりすることがあります。この記事では、Spire.Doc for .NET を使用して、C# および VB.NET でプログラムによって Word でテーブルに画像を挿入または抽出する方法を示します。 Word のテーブルに画像を挿入する 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.Width と DocPicture.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 のテーブルから画像を抽出する テーブルから画像を抽出するには、すべての行、各行のすべてのセル、各セルのすべての段落と各段落のすべてのサブオブジェクトをループします。次に、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(@"imagesTableImage-{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("imagesTableImage-{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 一時ライセンスを申請する 結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。