Работа с Word посредством C#

820
24 декабря 2016, 14:51

Здравствуйте! Возможно ли как-то после какой-то N строки, сделать так сказать скриншот следующих строк и вывести их потом отдельно в виде картинки(или под другим предлогом, нужно видеть данные). Т.е на 5 строке может быть текст, а следующие 10 занимать : 'картинка' и какой-то текст к нему, мне нужно вот этих товарищей выкорчевать и показать их, такое возможно? Только влился в Word, разобрался с поиском строк и прочего, а такой момент реализуем? Заранее спасибо.

ИЛИ возможно в интервале N строчек найти картинку и вставить ее в PictureBox? В интернете искал - есть,но наоборот.

Answer 1
using System;
using System.Drawing;
using System.IO;
using System.Threading;
using Page = System.Web.UI.Page;
using Microsoft.Office.Interop.Word;
using Microsoft.VisualBasic.Devices;
public partial class ReadIMG : System.Web.UI.Page
{   
    private Application m_word;
    private int m_i;
    protected void Page_Load(object sender, EventArgs e)
    {
        object missing = Type.Missing;
        object FileName = Server.MapPath("~/LectureOrig/Word.docx");
        object readOnly = true;
        m_word = new Application();
        m_word.Documents.Open(ref FileName,
                                ref missing, ref readOnly, ref missing, ref missing,
                                ref missing, ref missing, ref missing, ref missing,
                                ref missing, ref missing, ref missing, ref missing, ref missing,ref missing,ref missing);
        try
        {
            for (int i = 1; i <= m_word.ActiveDocument.InlineShapes.Count; i++)
            {
                m_i = i;
               // CopyFromClipboardShape();
                Thread thread = new Thread(CopyFromClipbordInlineShape);
                thread.SetApartmentState(ApartmentState.STA);
                thread.Start();
                thread.Join();
            }
        }
        finally
        {
            object save = false;
            m_word.Quit(ref save, ref missing, ref missing);
            m_word = null;
        }
    }
    protected void CopyFromClipbordInlineShape()
    {   
        InlineShape inlineShape = m_word.ActiveDocument.InlineShapes[m_i];
        inlineShape.Select();
        m_word.Selection.Copy();
        Computer computer = new Computer();
        //Image img = computer.Clipboard.GetImage();
        if (computer.Clipboard.GetDataObject() != null)
        {
            System.Windows.Forms.IDataObject data = computer.Clipboard.GetDataObject();
            if (data.GetDataPresent(System.Windows.Forms.DataFormats.Bitmap))
            {
                Image image = (Image)data.GetData(System.Windows.Forms.DataFormats.Bitmap, true);                
                image.Save(Server.MapPath("~/ImagesGet/image.gif"), System.Drawing.Imaging.ImageFormat.Gif);
                image.Save(Server.MapPath("~/ImagesGet/image.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
            }
            else
            {
                LabelMessage.Text="The Data In Clipboard is not as image format";
            }
        }
        else
        {
            LabelMessage.Text="The Clipboard was empty";
        }
    }

взято отсюда

READ ALSO
Методы расширения LINQ

Методы расширения LINQ

Есть список товаров List<Product>, в котором Product имеет свойства стоимость Cost и группа GroupМожете привести пример как использовать метод расширения,...

500
загрузка и распаковка архивов в c#

загрузка и распаковка архивов в c#

У меня есть программа на с, которая загружает документы ворд, а затем нужное содержимое документа раскидывает по таблице DataGridViewТеперь нужно,...

388
Как корректно соединить имя файла с путем к файлу? [требует правки]

Как корректно соединить имя файла с путем к файлу? [требует правки]

Как корректно соединить имя файла с путем к файлу?

434
Парсинг сайтов в .NET

Парсинг сайтов в .NET

Пытаюсь распарсить сайт через AngleSharp

689