-
Работа с таблицами
Не
позволяйте компьютеру догадаться, что
вы спешите.
Из
законов Мэрфи
Давайте
научимся вставлять таблицы в документ
Word. Каждая таблица в
программе будет представлена переменной
типа Table.
Поэтому прежде всего заведем такую
переменную:
VAR
t:Table;
При
вставке новой таблицы в документ надо
указать количество строк и столбцов в
ней. Делаетсяэтотак:
t:=WordDocument1.Tables.Add(WordApplication1.Selection.Range,
6,5,EmptyParam,EmptyParam);
Здесь
6 – число строк, а 5 – число столбцов. Не
забудьте присвоить ссылку на новую
таблицу переменной t.
Новой
таблице желательно придать приличный
вид. Чтобы линии сетки таблицы были
видны, задаем так называемый автоформат
таблицы. Здесь уже понадобятся две
переменные типа OLEVariant:
par
и par1.
par:=wdTableFormatGrid1;
par1:=wdTableFormatApplyBorders;
t.AutoFormat(par,
par1, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam);
Теперь
давайте разместим таблицу по центру
страницы:
t.Rows.Alignment:=wdAlignRowCenter;
Наконец,
очень удобно включить функцию автоподбора
ширины столбцов, что позволяет не
задумываться о подгонке ширины текста
в ячейках:
t.AllowAutoFit:=True;
par:=wdAutoFitContent;
t.AutoFitBehavior(par);
Для
доступа к тексту внутри конкретной
ячейки таблицы используется ее свойство
Cell(строка,
столбец). Например,
вот так можно заполнить нашу таблицу
случайными числами (не забудьте выделить
память под целые переменные i,j
и вещественную a):
// цикл
по
ячейкам
таблицы
for i:=1 to 6
do
for
j:=1 to 5 do
begin
//
занесение значения в ячейку с координатами
i,j
t.Cell(i,j).Select;
a:=RANDOM(100);
WordApplication1.selection.InsertAfter
(FloatToStrF(a,ffFixed,10,4))
end;
Самое
трудное при работе с таблицей – это
выбраться из нее, то есть перенести
точку ввода текста и текстовый курсор
за пределы таблицы, чтобы продолжить
писать текст после нее. Делается это
так (предполагаем, что перед этим мы
выводили текст в последнюю ячейку
таблицы и курсор находится в ней):
//
Переводим курсор за пределы таблицы
par:=wdStory;
par1:=wdMove;
WordApplication1.Selection.EndKey(par,par1);
Метод
EndKey
имитирует нажатие клавиш Ctrl+End,
т.е. переход в самый конец документа,
под таблицу.
-
Запуск Wordиз внешней программы
Общая
сумма разума на планете — величина
постоянная, а население растет…
Из
законов Мэрфи
Наша
программа, работая как СОМ-клиент,
заставляет Word сформировать
на диске doc-файл с указанным
именем. Часто желательно, чтобы по
завершении генерации этот файл оставался
бы загруженным в Word, чтобы
пользователь тут же смог его просмотреть.
Простейший способ – выбросить из
программы методы WordDocument1.Close
и WordApplication1.Quit.
Тогда созданный нами документ и весь
Word не будут закрываться.
Способ
более интересный – запуск Word
в любой момент из нашей программы и
загрузка в него файла с указанным именем.
Причем так можно запускать не только
Word, но и любую другую
программу, связанную с определенным
типом файлов (скажем, для dwg-файлов
запустится AutoCAD). Делается
это так:
ShellExecute(0,
‘OPEN’, pchar(имя файла), nil, nil, SW_MAXIMIZE)
Не
забывайте, что, если в имени файла
содержатся пробелы, то его надо взять
в кавычки. Параметр SW_MAXIMIZE
раскрывает окно Word’а на
весь экран.
Соседние файлы в папке 2 семестр
- #
- #
- #
- #
wolitar 0 / 0 / 0 Регистрация: 09.12.2011 Сообщений: 30 |
||||||||
1 |
||||||||
09.03.2012, 08:37. Показов 7785. Ответов 1 Метки нет (Все метки)
Всем привет! У меня два вопроса
почему-то таблица получилась бесцветная. как сделать так, чтобы были видны ячейки?
то выдаёт ошибку как по другому можно заполнить ячейку таблицы?
0 |
Mawrat 13094 / 5875 / 1706 Регистрация: 19.09.2009 Сообщений: 8,808 |
||||
09.03.2012, 17:17 |
2 |
|||
Пример, как открыть документ MS Word, добавить в его конце новую таблицу, разлиновать её и перенести в неё данные из таблицы типа TStringGrid на форме.
Что касается чтения данных из таблицы MS Word. Надо иметь в виду, что текст, прочитанный из ячейки таблицы MS Word, в конце содержит пару управляющих символов: #13#7. Эти символы следует удалить.
3 |
Использую RAD Studio 10.1 Berlin.
Возникла вот такая задача:
Есть word документ в котором большое количество таблиц.
Нужно просмотреть документ от начала и до конца и при встрече таблицы прочитать данные из 1 столбца 1 строки. Если там написано «Таблица», тогда
Нужно прочитать данные 2 столбца, с 3 строки и до конца таблицы.
Как это можно сделать?
Понимаю, что задача большая — буду рад любым примерам кода.
Пример рабочего кода
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
wdApp, wdDocs, wdDoc : Variant;
file_name:string;
temp_string:AnsiString;
begin
file_name:=ExtractFilePath( Application.ExeName )+'test.doc';
//Пытаемся запустить MS Word и получить ссылку на объект Application.
//- Это корневой объект в объектной структуре MS Word.
try
wdApp := CreateOleObject('Word.Application');
except
ShowMessage('Не удалось запустить MS Word. Действие отменено.');
Exit;
end;
//Если требуется, делаем видимым окно MS Word.
wdApp.Visible := false;
//Ссылка на коллекцию документов.
wdDocs := wdApp.Documents;
//Попытка открыть выбранный файл и получить ссылку на объект документа.
wdDoc := wdDocs.Open(FileName:=file_name);
{
CurTable:=ActiveDocument.Tables(1);
CurTable.Cell(10,20).Range.Text:=Text;
goto end_of_this;
}
//Читаем текст документа и записываем его в Мемо.
temp_string:=wdDoc.Range.Text;
//Закрываем MS Word.
wdApp.Quit;