Получить картинки из документа MS Word - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, помогите пожалуйста со следующей задачей. Мне нужно "вытащить" все картинки из документа Word и занести их в ячейки грида. Через гугл нашел следующий способ:
Листинг программы
  1. For Each wFile In My.Computer.FileSystem.GetFiles(Path)
  2. If wFile.EndsWith("doc") Or wFile.EndsWith("docx") And wFile.Contains("~$") = False Then
  3. Dim appWd As Application = New Application
  4. appWd.Visible = False
  5. Dim docWd As Document = appWd.Documents.Open(wFile)
  6. Dim col As New DataGridViewComboBoxColumn
  7. With col
  8. .HeaderText = "Figure"
  9. End With
  10. Dim imgCount As Integer
  11. dgvMain.Rows.Add()
  12. For imgCount = 1 To docWd.Shapes.Count
  13. docWd.Shapes(imgCount).Select()
  14. appWd.Selection.CopyAsPicture()
  15. dgvMain.Columns.Add(col)
  16. If Clipboard.ContainsImage Then
  17. dgvMain.Rows(0).Cells(imgCount).Value = Clipboard.GetImage
  18. PictureBox1.Image = Clipboard.GetImage
  19. End If
  20. Next
  21. docWd.Close()
  22. appWd.Quit()
  23. End If
  24. Next
Даже если в PictureBox и появляется картинка, то она далеко не последняя в документе, что говорит о том, что не все изображения обрабатываются. В датагриде заполняется только одна ячейка, и не картинкой, а надписью System.Drawing.Bitmap. Заранее спасибо.

Решение задачи: «Получить картинки из документа MS Word»

textual
Листинг программы
  1. Imports WRD = Microsoft.Office.Interop.Word '
  2. Imports System.IO
  3. Public Class Form4
  4.     Private wApp As WRD.Application 'Word2003
  5.     Private wDoc As WRD.Document '*.doc
  6.     Private Sub Form4_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  7.         wApp = New WRD.Application
  8.         wDoc = wApp.Documents.Open(Path.Combine(Application.StartupPath, "tst1.doc"))
  9.         wApp.Visible = True
  10.         'wApp.Visible = False
  11.         DataGridView1.Columns.Add("NN", "NUM")
  12.         DataGridView1.Columns.Add(New DataGridViewImageColumn)
  13.         DataGridView1.Columns(1).Name = "IMAGE"
  14.         DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
  15.         DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
  16.     End Sub
  17.     Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
  18.         Dim tp As WRD.WdInlineShapeType
  19.         Dim ii As Integer
  20.         For Each sh As WRD.InlineShape In wDoc.InlineShapes
  21.             tp = sh.Type
  22.             If tp = WRD.WdInlineShapeType.wdInlineShapePicture Then
  23.                 ii += 1
  24.                 sh.Select()
  25.                 wApp.Selection.CopyAsPicture()
  26.                 DataGridView1.Rows.Add({ii.ToString, Clipboard.GetImage})
  27.             End If
  28.         Next
  29.     End Sub
  30. End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут