Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11642
Последний выпуск: 19.06.2015

Экспорт таблиц Paradox в MSWord

Автор: Ghost Rider
Дата: 26 апреля 2008 года

Недавно я прочитал одну статью посвященную экспорту таблиц Paradox в MSWord. Статья вроде бы ничего, но есть одно но, там было описано как вывести только одну конкретную запись из таблицы. Меня это не устраивало (к этому времени я работал над проектом ResCompany) - код на две страницы, а выводит всего лишь одну запись и то надо указать какую. Ну вот очередная пища для "серого вещества" - как сделать так, чтобы вывести все записи таблицы в документ MSWord. Немного помучившись я написал небольшую процедурку автоматизирующую весь процесс экспорта. Ниже приведен код процедуры.

Procedure Export_to_Word (TableName:TTable; WordApp:TWordApplication; WordDoc:TWordDocument);
var
  Coloms, Rows: integer;
  j, k: integer;
  i: integer;
    TableFormat, TableFormat1: OleVariant;
  ListFields: TStringList;
begin
     TableFormat:=wdTableFormatWeb3;
       TableFormat1:=wdTableFormatApplyBorders;
       ListFields:=TStringList.Create;
       WordApp.Connect;
       WordApp.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
       WordDoc.ConnectTo(WordApp.ActiveDocument);
if not TableName.Active then TableName.Active:=true;
    with TableName do 
    begin
         Coloms:=FieldCount;
        Rows:=RecordCount+1;
        FieldDefs.GetItemNames(ListFields);
       end;
     i:=1;
       WordDoc.Table.Add(WordDoc.Range, Rows, Coloms, EmptyParam, EmptyParam);
       WordDoc.Tables.Item(i).Colums.AutoFit;
       WordDoc.Tables.Item(i).AutoFormat(TableFormat, TableFormat1,
                    EmptyParam, EmptyParam,EmptyParam, EmptyParam,
                    EmptyParam, EmptyParam, EmptyParam, EmptyParam);
For j:=0 to Coloms-1 do
begin
    WordDoc.Tables.Item(i).Cell(1, j+1).Range.InsertBefore(ListFields[j]);
    WordDoc.Tables.Item(i).Cell(1, j+1).Range.Font.Color:=clRed;
end;
with TableName do
begin
    First;
    For k:=2 to Rows do
begin
    For j:=0 to Coloms-1 do
begin
if Fields[j].Value=Null
  then ShowMessage('Чтобы таблица была экспортирована поля не должны содержать пустые значения'
                 +#13#10+'экспорт не выполнен');
WordDoc.Tables.Item(i).Cell(k,,j+1).Range.InsertBefore(Fields[j].Value);
end;
Next;
end;
end;
end;

Вот и весь листинг данной процедуры. Пользуйтесь на здоровье. Да кстати, кто заинтересовался в кодинге для приложений MSOffice, те могут прочитать справку по программированию на VBApplication. Именно из такой справки я и узнал как работать с MSWord, ну и другими приложениями подобного типа:)

Еще один момент. При вызове процедуры вам надо передать три параметра:

  1. Имя экспортируемой таблицы, для этого можно использовать уже подготовленный компонент TTable;
  2. Компонент WordApplication;
  3. Компонент WordDocument;

Последние два компонента можно было создать и в самой процедуре, но это уже не важно. Вы можете настроить процедуру под себя, добавить новые возможности, добавить исключения, а также переделать ее так, чтобы она выводила данные таблицы в MSExcel.

Ну и последнее при испытании запустите MSWord, если вы этого не сделаете, тогда вы не увидите результата работы:) и у вас в диспетчере задач будет висеть процесс MSWord'а. Вот пожалуй и все. Удачного ВАМ кодинга.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог