Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Импорт данных из Word в textbox (http://forum.oszone.net/showthread.php?t=281735)

Ali002 02-05-2014 15:00 2346019

Импорт данных из Word в textbox
 
Доброго времени суток, господа программисты, есть кто шарит в импорте с Word? Импортировать данные только из конкретных поляей, не из таблицы: есть поле и напротив него слова или предложение, вот его то мне и надо получить и вставить в textBoxы. Может подскажете ссылкой пожалуйста!!!!

Iska 02-05-2014 16:46 2346045

Используйте Automation.
Цитата:

Цитата Ali002
Импортировать данные только из конкретных поляей, не из таблицы: есть поле и напротив него слова или предложение, вот его то мне и надо получить »

Образец документа. В нём выделите то, что нужно получить.

Ali002 02-05-2014 20:56 2346143

А можно по подробнее пожалуйста, я просто ни разу не сталкивался с таким

Iska 02-05-2014 21:31 2346155

Цитата:

Цитата Ali002
А можно по подробнее пожалуйста, »

Для этого нужно как минимум понять, что означает:
Цитата:

Цитата Ali002
только из конкретных поляей, не из таблицы: есть поле и напротив него слова или предложение »

Я потому и прошу документ с указанным в нём диапазоном.

Ali002 02-05-2014 22:34 2346191

Вложений: 1
Файл 113104 вот заявка там отмечены поля откуда брать информацию

Iska 02-05-2014 23:18 2346203

Ali002, не очень понятно.

Ладно. Возьмём для примера эту часть:

Как видно, нам надо получить текст, начинающийся сразу следом за первым полем формы и до конца абзаца. Это может выглядеть так (примеры кода будут на VBScript, но перевести их на любой .Net, поняв общий принцип, труда Вам не составит):
читать дальше »
Код:

Option Explicit

Const wdCollapseEnd = 0
Const wdParagraph  = 4


Dim strDocument

Dim objFSO

Dim objWord
Dim objDocument
Dim objRange


strDocument = "E:\Песочница\0375\заявкаq.doc"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strDocument) Then
        Set objWord = WScript.CreateObject("Word.Application") ' Создаём объект Automation
        Set objDocument = objWord.Documents.Open(strDocument)  ' Открываем документ
       
        Set objRange = objDocument.FormFields.Item(1).Range    ' Получаем диапазон поля формы
        objRange.Collapse wdCollapseEnd                        ' Сворачиваем диапазон к его концу
        objRange.MoveEnd wdParagraph, 1                        ' Перемещаем конец диапазона к концу абзаца
       
        WScript.Echo objRange.Text                            ' Получаем и выводим текст
       
        Set objRange = Nothing                                ' Очищаем объект
       
        objDocument.Close                                      ' Закрываем документ
        Set objDocument = Nothing                              ' Очищаем объект
       
        objWord.Quit                                          ' Закрываем Word
        Set objWord    = Nothing                              ' Очищаем объект
Else
        WScript.Echo "Source document [" & strDocument & "] not found."
        WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0


Можно ориентироваться на номер абзаца, какой-либо опорный текст, оформление и т.п. Главное — найти способ, позволяющий однозначно определять искомый диапазон в документе.

Ali002 03-05-2014 00:01 2346212

Огромное спасибо, вот только с VBScript я вообще не дружу а есть у вас какой нибудь мануал по импорту с ворда ато в инете вообще нету заискался просто даж обычного примерчика

Iska 03-05-2014 00:09 2346214

Не надо дружить. Достаточно просто читать документацию по программному интерфейсу Word.

2003: Microsoft Word Visual Basic Reference
2013: Welcome to the Word 2013 developer reference

Ali002 03-05-2014 00:14 2346217

Благодарю буду ознакамливаться

Ali002 05-05-2014 14:55 2347301

Уважаемый Iska, я пытался переделать ваш код в c # но только у меня это не очень получается , вот вы работаете с полями и там доступ к конкретному полю а я не нашел эквивалента Formfields кроме как Range, только вот что то результата ннету помогите пожалста разобраться

Код:

Word.Application application = new Word.Application();
              Word.Document document = application.Documents.Open("D:zayavka.doc");
              Word.Range rng = document.Paragraphs[1].Range;
              rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
              rng.MoveEnd(wdParagraph,1);
              name_kompleksTextBox.Text=rng.Text;
              rng=null;
            document.Close();

              // Close word.
              application.Quit();


Ali002 05-05-2014 16:00 2347324

Цитата:

Цитата Iska
Как видно, нам надо получить текст, начинающийся сразу следом за первым полем формы и до конца абзаца. Это может выглядеть так (примеры кода будут на VBScript, но перевести их на любой .Net, поняв общий принцип, труда Вам не составит):
читать дальше » »

Уважаемый Iska, я пытался переделать ваш код в c # но только у меня это не очень получается , вот вы работаете с полями и там доступ к конкретному полю а я не нашел эквивалента Formfields кроме как Range, только вот что то результата ннету помогите пожалста разобраться

Код:
Word.Application application = new Word.Application();
Word.Document document = application.Documents.Open("D:zayavka.doc");
Word.Range rng = document.Paragraphs[1].Range;
rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
rng.MoveEnd(wdParagraph,1);
name_kompleksTextBox.Text=rng.Text;
rng=null;
document.Close();

// Close word.
application.Quit();

Iska 05-05-2014 22:04 2347500

Ali002, я не знаком с C#.


Время: 20:42.

Время: 20:42.
© OSzone.net 2001-