Модераторы: MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WordApplication, ExcelApplication, Работа с Word и Excel 
:(
    Опции темы
TSIBA
Дата 6.9.2009, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 22.4.2009

Репутация: нет
Всего: нет



Может поможет:

Название: Советы по Delphi 1.4.6
Автор: В. Озеров
Описание: коллекция ответов на нетрадиционные вопросы программирования на Delphi, нестандартных решений, хитростей и интересных идей. Для практической пользы дела приведены конкретные примеры кода, позволяющие донести идею или полностью ответить на заданный вопрос.
Размер: 1,38 Mb
Формат: chm
Ссылки: 
http://depositfiles.com/files/ho3cqvt36

Название: Советы по Delphi 1.4.2001
Автор: В. Озеров
Описание: коллекция ответов на нетрадиционные вопросы программирования на Delphi, нестандартных решений, хитростей и интересных идей. Для практической пользы дела приведены конкретные примеры кода, позволяющие донести идею или полностью ответить на заданный вопрос.
Размер: 1,97 Mb
Формат: chm
Ссылки: 
http://depositfiles.com/files/jutszmneq

Название: Отчетность в Exel
Автор: М. Фленов
Описание: Полностью описана робота с Exel в Delphi. К архиву прилагаються готовие примеры.
Размер: 970 кб
Формат: pdf
Ссылки: http://depositfiles.com/files/va7m3iqix
PM MAIL   Вверх
Natalishka
Дата 29.9.2009, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 25.9.2009

Репутация: нет
Всего: нет



Подскажите пож-та, мне нужно сделать импорт данных (котрые генерируются ХР)в word.
У меня есть шаблон, надо в определённые места вставить данные.
В excel я делаю так :
with spRead do
   begin
    First;
    while not Eof do
    begin
     xl.WorkBooks[1].WorkSheets[1].Cells[Count + 5, 1].Value := FieldByName('FAM').AsString;
     xl.WorkBooks[1].WorkSheets[1].Cells[Count + 5, 2].Value := FieldByName('NAME').AsString
     Inc(Count);
     Next;
    end;
   end;
Здесь все понятно я указываю ячейки, но для word нет таких ф-ций.
А как мне для word показать в какое именно место мне вставить данные ?

PM MAIL   Вверх
Alfredphb
Дата 1.10.2009, 04:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.10.2009

Репутация: нет
Всего: нет



Вопрос: надо изменить размер рисунка, вставляемого в Word.
Я делаю так (на основе кода, найденного где-то в инете):
Код

vprocedure TForm1.Button1Click(Sender: TObject);
var  
  fwdCharacter,wdExtend,Count: OleVariant;
  JPEG: TJPEGImage;
  bmp: TBitmap;
begin
  Word:=TWordApplication.Create(self);
 {....}
       JPEG := TJPEGImage.Create;
        JPEG.Assign(TBlobField(proc.FieldByName('Photo')));
        // изменить размер
         bmp:= Tbitmap.Create;
        try
          {Create thumbnail bitmap, keep pictures aspect ratio}
          bmp.Width :=  106; // ~ 28 мм
          bmp.Height:= 139; // ~ 35 мм
          bmp.Canvas.StretchDraw( bmp.Canvas.Cliprect,JPEG  );
          {Draw thumbnail as control}
          Self.Canvas.Draw( 100, 10, bmp );
        finally
        Clipboard.Assign(bmp);
        Word.Selection.Range.Paste;
        bmp.free;
        end;
end;

Проблема в том, что вставленный в документ рисунок изрядно теряет в качестве, "распикселизация".
Если вставляю в оригинальном размере:
         
Код

 bmp.Width := JPEG.Width;
 bmp.Height:=JPEG.Height;

то качество сохраняется.
Я пытался после вставки изменить размер рисунка в вордовском документе:
       
Код

        fwdCharacter:=wdCharacter;
        Count:=1;
        Word.Selection.MoveRight (fwdCharacter, Count, wdExtend);
       Word.Selection.ShapeRange.Width:=28;


никаких сообщений не выдаётся, размер не меняется.
Что я делаю не так, и как надо правильно?



PM MAIL   Вверх
Alfredphb
Дата 8.10.2009, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.10.2009

Репутация: нет
Всего: нет



По поводу изменения размеров рисунка получилось вот так, вдруг кому пригодиться:

Код

procedure Tf.bbClick(Sender: TObject);
var
       Word : TWordApplication;
       WDoc: Word2000._Document;
       OleFileName   : OleVariant;
       JPEG: TJPEGImage;
       bmp: TBitmap;
begin
  Word:=TWordApplication.Create(self);
  WDoc:=word.Documents.Open(OleFileName, EmptyParam, EmptyParam,
        EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
        EmptyParam, EmptyParam, EmptyParam, EmptyParam);

 {....}
       JPEG := TJPEGImage.Create;
        JPEG.Assign(TBlobField(proc.FieldByName('Photo')));
        // изменить размер
         bmp:= Tbitmap.Create;
       try
          {Create thumbnail bitmap, keep pictures aspect ratio}
          bmp.Width := JPEG.Width; 
          bmp.Height:=JPEG.Height; 
          bmp.Canvas.StretchDraw( bmp.Canvas.Cliprect,JPEG  );
          Self.Canvas.Draw( 100, 10, bmp );
        finally
          Clipboard.Assign(bmp);
          Word.Selection.Paste;
          WDoc.InlineShapes.Item(1).Height := 100; // 35,24 mm
          WDoc.InlineShapes.Item(1).Width := 74 ;  // 26,14 mm
          bmp.free;
       end;
end;

PM MAIL   Вверх
TopCore
Дата 14.10.2009, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 17.8.2009

Репутация: нет
Всего: нет



Здравствуйте! Я с вопросом "из Excel в Paradox". Делаю по примеру с первой страницы. Но есть проблемы. Подсчёт строк неправильный: вместо 65 подсчитывает 74. И когда доходит код до работы с БД выдаёт сообщение об ошибке:
Код

Project Project1.exe raised exception class EDatabaseError with message
'Table1: Cannot perform this operation on a closed dataset'.
Process stopped. Use Step or Run to continue.

Как набор данных сделать открытым?

Это сообщение отредактировал(а) TopCore - 14.10.2009, 12:53
PM MAIL   Вверх
Данкинг
Дата 14.10.2009, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 5
Всего: 130



TopCore, создай новый топик. При чём здесь ExcelApplication вообще?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
TopCore
Дата 14.10.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 17.8.2009

Репутация: нет
Всего: нет



За вопрос о БД прошу прощения. А вот что не так с определением количества строк в таблице?
Код

ExcelWorksheet1.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;

Эта строка активирует ячейку 'Х74' вместо 'Т62'.
PM MAIL   Вверх
Alexanderneo
Дата 17.4.2010, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 8.2.2010

Репутация: нет
Всего: нет



Подскажите, пожалуйста,  как можно подключиться к ворду дважды. Т.е. я изначально подключаюсь к ворду, записываю в него, все, что надо. Если потом открыть созданный документ, а потом закрыть его (процесс WINWORD при этом закрывается естественно) и попытаться создать еще один документ (не закрывая программы), то программа выводит ошибку о недоступности сервера RPC.

Подсоединяюсь к ворду так:

Код

procedure TForm1.Button1Click(Sender: TObject);
...
  WordApplication1.AutoConnect:=true;
  WordApplication1.ConnectKind := ckNewInstance;
  WordApplication1.Connect;
  WordApplication1.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);       // (вот на эту строчку он потом ругается)
  WordApplication1.Visible:=false;

 
В подключении пихаю все уже от безисходности
Вопрос заключается в том, что при первом разе ворд автоматом подключается, потом если процесс ворда прервать, то к ворду уже не получается подключиться. Помогите кто может.
PM MAIL   Вверх
Данкинг
Дата 17.4.2010, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 5
Всего: 130



Цитата(Alexanderneo @  17.4.2010,  14:11 Найти цитируемый пост)
Если потом открыть созданный документ, а потом закрыть его (процесс WINWORD при этом закрывается естественно) 

Ничего естественного. Можно закрыть документ, не закрывая самого "ворда".


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Albinos_x
Дата 19.4.2010, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Цитата(Alexanderneo @  17.4.2010,  13:11 Найти цитируемый пост)
попытаться создать еще один документ (не закрывая программы), то программа выводит ошибку о недоступности сервера RPC

я вроде писал об этом в статье.... 
в общем:
1. Если Вы показываете документ пользователю и он его может закрыть, то Вам необходимо отлавливать сообщение о закрытии документа или самого сервера Word, для этого у компанента есть необходимые обработчики событий.
2. При программном закрытии таких проблем возникать не должно, но если все-же возникают, то пробуйте при закрытии делатьсь Disconnect с сервером, тогда он будет переинициализировать сервер заново.



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
scorpion87
Дата 3.5.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 3.5.2010

Репутация: нет
Всего: нет



Здравствуйте, проблема в следующем: 
используя фукнцию:      Word.ActiveDocument.Tables.Item(1).Cell(12,2).Range.Text:='текст';
я вставляю в нужную ячейку необходимый текст, далее необходимо вставить в этой же ячейке таблицы другую строку, я програмно жму клавишу "Enter" используя функцию WordApp.Selection.TypeParagraph;
Как вставить текст? вызвав функцию  Word.selection.TypeText('sdf2');    текст вставляется не в таблицу а в документ, по сути нужно наверное поставить указатель в данную ячейку и потом в нее записывать.
Короче говорю мне нужно в одну ячеку вордовской таблицы вставить последовательно несколько строк.

Это сообщение отредактировал(а) scorpion87 - 3.5.2010, 15:44
PM MAIL   Вверх
Albinos_x
Дата 4.5.2010, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Цитата(scorpion87 @  3.5.2010,  15:42 Найти цитируемый пост)
я вставляю в нужную ячейку необходимый текст, далее необходимо вставить в этой же ячейке таблицы другую строку, я програмно жму клавишу "Enter" используя функцию WordApp.Selection.TypeParagraph;

хм... а что мешает сделать вставку в один присест:
Код

Word.ActiveDocument.Tables.Item(1).Cell(12,2).Range.Text:='текст'+#13#10+'text2';

или таким вот подходом:
Код

Word.ActiveDocument.Tables.Item(1).Cell(12,2).Range.Text:='текст';
...
Word.ActiveDocument.Tables.Item(1).Cell(12,2).Range.Text:=Word.ActiveDocument.Tables.Item(1).Cell(12,2).Range.Text+#13#10+'text2';

?


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Akella
Дата 7.8.2010, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 2
Всего: 329



Excel в Delphi. Работа со свойствами документа.
http://www.webdelphi.ru/2010/06/excel-v-de...vami-dokumenta/
PM MAIL   Вверх
klyaksa
Дата 25.8.2010, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 15.9.2005

Репутация: нет
Всего: нет



Подскажите возможно ли экспортировать в excel не плоский текст, а форматированный rtf? Если да, то как?
Т.е. у меня в строковой переменной s есть rtf-текст, при присваивании Excel.ActiveWorkBook.WorkSheets[1].Range['A1'].Value:=s в ячейке плоских текст и видны все теги rtf, а не форматированный текст :(
PM MAIL   Вверх
Данкинг
Дата 25.8.2010, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 5
Всего: 130



Цитата(klyaksa @  25.8.2010,  15:48 Найти цитируемый пост)
Подскажите возможно ли экспортировать в excel не плоский текст, а форматированный rtf?

Возможно, через буфер обмена. Только создай новую тему для этого вопроса.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.1691 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.