:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки :: | ||
Л и с о в о д ы в с е х с т р а н, о б ъ е д и н я й т е с ь !!! |
Как заполнить таблицу в MS Word | ||
---|---|---|
Вопрос
Как заполнить таблицу в документе MS Word данными из таблицы FoxPro? Ответ Прежде всего, следует серьезно обдумать возможность использования вместо прграммы MS Word для отображения табличных данных программы MS Excel. Поскольку именно эта программа предназначена для заполнения табличных данных. Для MS Word таблица – это вспомогательный элемент. Впрочем, заполнение таблицы MS Word, в своей основе, мало отличается от заполнения таблицы в MS Excel. Точно также происходит адресация к конкретной ячейке с последующим изменением одного из свойств этой ячейки. Сложность заключается именно в способе адресации. Адресацию к объектам MS Word можно сравнить с адресацией к объектам формы в FoxPro. Вы ведь можете положить объект TextBox как собственно на форму, так и на закладку PageFrame или внутрь объекта контейнера. Соответственно, изменится и способ адресации к объекту. Надо будет указать в иерархии все те объекты-контейнеры, внутри которых расположен нужный Вам объект. Правда, MS Word имеет и другое отличие от объектов FoxPro. Как правило, Вы обращаетесь к объектам формы в FoxPro по их именам. Объекты MS Word, как правило, собственных имен не имеют. Все объекты MS Word являются членами тех или иных коллекций и обращение к ним происходит по их индексам внутри соответствующих коллекций. Следовательно, в общем случае, адресация к таблице в MS Word будет иметь вид Приложение_Word.Коллекция_Документов(Индекс_Документа).Коллекция_Таблиц(Индекс_Таблицы) Но это только в том случае, если таблица лежит непосредственно на листе документа. Если же она вложена в другой объект, то между "Коллекцией_Документов" и "Коллекцией_Таблиц" необходимо добавить коллекцию объекта-контейнера. Существенным недостатком такого способа адресации является невольная привязка к физическому порядку добавления объектов в документ MS Word. Например, если Вы добавили нужную Вам таблицу физически самой первой, то она, естественно, будет самой первой в коллекции таблиц. Но если Вы в процессе модификации шаблона документа вырежете Вашу таблицу, создадите новую таблицу, а потом восстановите старую таблицу, то она окажется уже второй в коллекции таблиц. Эту особенность следует помнить при написании программ заполнения таблиц в MS Word. Сначала создадим шаблон, с которым и будем в дальнейшем работать. Создайте новый документ MS Word. Лучше создавать не файл документа (расширение .Doc), а файл шаблона документа (расширение .Dot). Теперь создайте в этом документе таблицу из 2 строк и любого количества столбцов. Это можно сделать, нажав иконку в виде таблицы. Если такой иконки нет, то выберите пункт меню "Таблица", подпункт "Нарисовать таблицу". Почему всего две строки? Сейчас объясню. Первая строка будет строкой заголовка таблицы. Поставьте указатель курсора в любую ячейку первой строки таблицы, далее выберите пункт меню "Таблица", подпункт "Заголовки". Визуально ничего не изменилось. Однако если Вы снова выберете пункт меню "Таблица", то слева от подпункта "Заголовки" окажется "птичка". Т.е. текущая строка таблицы относится к заголовку таблицы. Заголовок таблицы обладает тем свойством, что он автоматически копируется на новую страницу документа, если количество строк таблицы занимает больше, чем одну страницу. Собственно, можете сразу заполнить строку заголовка, т.к. вряд ли ее содержимое будет зависеть от данных в таблице FoxPro. Итак, в результате, в документе появилась одна таблица из двух строк. Причем первая строка помечена как заголовок. Вторая строка предназначена для заполнения собственно данными. Но ведь данных, скорее всего, будет больше, чем одна строка! Верно. Проблема только в том, что Вы заранее не знаете, сколько именно строк будет в таблице. Следовательно, придется формировать строки программно. В процессе заполнения таблицы. Теперь, после всех этих предварительных подготовок, пишем собственно код в FoxPro.
В этом коде 'TestWord.dot' - это имя созданного Вами файла шаблона. Здесь имя приведено просто в качестве примера. Использована функция FullPath(), чтобы получить полный путь доступа к этому файлу. Синтаксис вида
Это нововведение версии Visual FoxPro 7.0 для подключения механизма IntelliSens. Если у Вас младшая версия FoxPro, то можете писать в привычном синтаксисе.
Собственно на работоспособность программы это никак не влияет. Это всего-лишь облегчение процесса программирования, но это никак, никоим образом, не влияет на работоспособность программы. Существенным остается вопрос, откуда я узнал все эти методы и свойства собственно приложения MS Word. По большей части из документации по языку Microsoft Visual Basic, встроенному в программу MS Word. Встроен как сам язык, так и документация . Хотя, поиск существенно облегчил механизм IntelliSens в FoxPro. Я сразу вижу все свойства и методы того или иного объекта и предполагаю, что именно мне может понадобиться. Затем смотрю документацию по языку Microsoft Visual Basic и уточню, действительно ли это то, что мне надо. Если количество строк в таблице MS Word всегда одно и то же, или же Вам надо заполнить определенные места в обычном текстовом документе, то для этого лучше воспользоваться рекомендациями, приведенными в другой статье: Как мне вывести данные в существующий MS WORD документ Описанный в данной статье механизм заполнения таблицы относительно медленный, хотя и самый надежный. Впрочем, как правило, таблицы, заполняемые в MS Word относительно небольшого размера, поэтому общее время заполнения таблицы будет не велико. Если же процесс заполнения таблицы MS Word станет занимать слишком много времени, то следует подумать о способах оптимизации этого процесса. Есть разные варианты, но здесь их описывать не имеет смысла. |
||
Тема | Просмотров | Написано | Написано |
---|---|---|---|
Работа с другими программами из FoxPro (Word, Excel и т.п.) | 15918 | Владимир Максимов | 01.03.05 21:53 |
Как мне вывести данные в существующий MS WORD документ | 19943 | Владимир Максимов | 20.04.05 19:44 |
Как открыть файл в другом приложении | 14358 | Владимир Максимов | 15.06.05 22:18 |
Как узнать значение константы Word или Excel | 10801 | Владимир Максимов | 18.09.05 11:24 |
Как узнать какая команда Word или Excel выполняет нужное действие | 11978 | Владимир Максимов | 18.09.05 11:34 |
Как заполнить таблицу в MS Word | 16022 | Владимир Максимов | 20.01.07 17:35 |
© 2006 Fox Club  |