скопировать текст из текстового поля файла слова - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть файл слов с изображением объекта. Эта картина имеет 5 столбцов и 25 строк. Когда я щелкаю правой кнопкой мыши на картинке, у меня есть опция Edit Picture. Когда я редактировал изображение, я обнаружил, что оно содержит несколько текстовых полей, хранящихся в форме / текстовом поле / таблице (честно говоря, я точно не знаю, что это за объект). Опции, которые я получаю, когда щелкаю правой кнопкой мыши по изображению, выглядят так:

Right Click Options

Проблема: Я хочускопируйте текст из этих текстовых полей (по 1 столбцу за раз) за один раз (или, по крайней мере, несколько раз, используя цикл for) и вставьте его в какой-нибудь необработанный файл (text / excel / wordpad и т. д.). Но я понятия не имею, как создается это изображение.

Что я пробовал: Я пытался написать ac # код, чтобы сделать это. Сначала я пытался извлечь текст прямо из изображения. Я был на 90% успешным, но некоторые буквы не были распознаны моим исходным кодом. Итак, я подумал, можно ли это сделать другим или более простым способом! Непосредственно копирование из файла слова? Вручную я не могу скопировать содержимое всего текстового поля в столбце / raw сразу. Копирование из каждого текстового поля действительно беспокойно! Это код (я тоже пробовал docs.InlineShapes, но не повезло):

private void button1_Click(object sender, EventArgs e)
    {
        string fileName = @"C:\path\to\source\file\test.docx";

        object missing = System.Reflection.Missing.Value;
        object readOnly = false;
        object isVisible = true;

        Word.Application wordApp = new Word.Application();
        object firstShape = 1;
        string textFrameText = null;

        Word.Document docs = wordApp.Documents.Open(fileName, missing, readOnly, missing, missing, missing,
            missing, missing, missing, missing, missing, isVisible, missing, missing, missing, missing);

        if (docs.Shapes.Count > 0) ***//always its 0, so never enters the loop***
        {
            try
            {
                foreach (Word.Shape sh in docs.Shapes)
                {
                    object ind = sh.Name;
                    wordApp.ActiveDocument.Shapes.SelectAll();
                    Thread.Sleep(1000);
                    wordApp.ActiveDocument.Shapes.get_Item(ref ind).Ungroup();
                 //after this I have to copy & paste the texts.
                }
            }
            catch(Exception shp)
            {
                MessageBox.Show(shp.Message);
            }


            foreach (Word.Shape shape in docs.Shapes)
            {
                //just for testing purpose
                MessageBox.Show(shape.ID + "\t" + shape.Type.ToString());
                //shape.Delete();
                //textFrameText += wordApp.ActiveDocument.Shapes.get_Item(ref firstShape).TextFrame.TextRange.Text + " ";
                //if (shape.Type == Microsoft.Office.Core.MsoShapeType.msoTextBox)
                //{
                //    // do something with shape.TextFrame.TextRange.Text
                //    string textFrame = shape.TextFrame.TextRange.Text;
                //}
            }
        }
        /*string textFrameText = wordApp.ActiveDocument.Shapes.get_Item(ref firstShape).TextFrame.TextRange.Text;
        wordApp.Quit(ref missing, ref missing, ref missing);

        string path1 = @"path\to\output\file\WriteLines.txt";
        using (StreamWriter sw = new StreamWriter(path1, false))
        {
            sw.WriteLine(textFrameText);
            sw.Close();
        }
        */

Пример изображения:

sample2

Например, цель:

Серийный номер - ABC123 |Код заказа - WXY789 |Cust Num - 1234567

Извините! Изображение не так ясно. Я хочу сделать противоположное тому, что когда-либо предлагалось в этом ответе. В моем случае изображение остается редактируемым, а не чистым до тех пор, пока я не сохраню его как изображение или не сохраню файл как pdf. Кто-нибудь может мне с этим помочь? Заранее спасибо.

...