Получить картинки из документа MS Word - Visual Basic .NET
Формулировка задачи:
Здравствуйте, помогите пожалуйста со следующей задачей. Мне нужно "вытащить" все картинки из документа Word и занести их в ячейки грида.
Через гугл нашел следующий способ:
Даже если в PictureBox и появляется картинка, то она далеко не последняя в документе, что говорит о том, что не все изображения обрабатываются.
В датагриде заполняется только одна ячейка, и не картинкой, а надписью System.Drawing.Bitmap.
Заранее спасибо.
Листинг программы
- For Each wFile In My.Computer.FileSystem.GetFiles(Path)
- If wFile.EndsWith("doc") Or wFile.EndsWith("docx") And wFile.Contains("~$") = False Then
- Dim appWd As Application = New Application
- appWd.Visible = False
- Dim docWd As Document = appWd.Documents.Open(wFile)
- Dim col As New DataGridViewComboBoxColumn
- With col
- .HeaderText = "Figure"
- End With
- Dim imgCount As Integer
- dgvMain.Rows.Add()
- For imgCount = 1 To docWd.Shapes.Count
- docWd.Shapes(imgCount).Select()
- appWd.Selection.CopyAsPicture()
- dgvMain.Columns.Add(col)
- If Clipboard.ContainsImage Then
- dgvMain.Rows(0).Cells(imgCount).Value = Clipboard.GetImage
- PictureBox1.Image = Clipboard.GetImage
- End If
- Next
- docWd.Close()
- appWd.Quit()
- End If
- Next
Решение задачи: «Получить картинки из документа MS Word»
textual
Листинг программы
- Imports WRD = Microsoft.Office.Interop.Word '
- Imports System.IO
- Public Class Form4
- Private wApp As WRD.Application 'Word2003
- Private wDoc As WRD.Document '*.doc
- Private Sub Form4_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- wApp = New WRD.Application
- wDoc = wApp.Documents.Open(Path.Combine(Application.StartupPath, "tst1.doc"))
- wApp.Visible = True
- 'wApp.Visible = False
- DataGridView1.Columns.Add("NN", "NUM")
- DataGridView1.Columns.Add(New DataGridViewImageColumn)
- DataGridView1.Columns(1).Name = "IMAGE"
- DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
- DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
- End Sub
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- Dim tp As WRD.WdInlineShapeType
- Dim ii As Integer
- For Each sh As WRD.InlineShape In wDoc.InlineShapes
- tp = sh.Type
- If tp = WRD.WdInlineShapeType.wdInlineShapePicture Then
- ii += 1
- sh.Select()
- wApp.Selection.CopyAsPicture()
- DataGridView1.Rows.Add({ii.ToString, Clipboard.GetImage})
- End If
- Next
- End Sub
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д