![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чтение строк из существующего doc-файла (word)... как? [Delphi, Windows]
Hmm © (2005-02-19 22:46:00)Здраствуйте уважаемые.
Возникла проблемма: необходимо читать строки из Word-овского файла и писать их в базу. Собственно, порылся в доступных мне книжках, нашел кучу инфы по созданию и записи в *.doc через WordApplication... как быть с чтением из уже существующего файла?
Буду благодарен любой инфе: пример, ссылка на статью... заранее спасибо.
GanibalLector (2005-02-20 15:22:00) [1]>А что за секции? Просто интересно...
Да,ХЕЗ.Обычный интерфейс...
Borland\Delphi\Ocx\Servers\Word97.pas
// *********************************************************************//
// Interface: Sections
// Flags: (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID: {0002095A-0000-0000-C000-000000000046}
// *********************************************************************//
Sections = interface(IDispatch)
['{0002095A-0000-0000-C000-000000000046}']
function Get__NewEnum: IUnknown; safecall;
function Get_Count: Integer; safecall;
function Get_First: Section; safecall;
function Get_Last: Section; safecall;
function Get_Application: WordApplication; safecall;
function Get_Creator: Integer; safecall;
function Get_Parent: IDispatch; safecall;
function Get_PageSetup: PageSetup; safecall;
procedure Set_PageSetup(const prop: PageSetup); safecall;
function Item(Index: Integer): Section; safecall;
function Add(var Range: OleVariant; var Start: OleVariant): Section; safecall;
property _NewEnum: IUnknown read Get__NewEnum;
property Count: Integer read Get_Count;
property First: Section read Get_First;
property Last: Section read Get_Last;
property Application: WordApplication read Get_Application;
property Creator: Integer read Get_Creator;
property Parent: IDispatch read Get_Parent;
property PageSetup: PageSetup read Get_PageSetup write Set_PageSetup;
end;
YurikGL (2005-02-20 14:41:00) [2]
> i4 := WordApp.ActiveDocument.Sections.Count;
А что за секции? Просто интересно...
GanibalLector (2005-02-20 14:38:00) [3]
var WordApp:OleVariant;
i1,i2,i3,i4:integer;
begin
WordApp := CreateOleObject('Word.Application');
WordApp.Documents.Open('C:\2.doc');//например
WordApp.visible:=true;
i1 := WordApp.ActiveDocument.Characters.Count;
i2 := WordApp.ActiveDocument.Words.Count;
i3 := WordApp.ActiveDocument.Sentences.Count;
i4 := WordApp.ActiveDocument.Sections.Count;
WordApp:=UnAssigned;
messagedlg('символов:'+inttostr(i1)+#10#13+
'слов:'+inttostr(i2)+#10#13+
'предложений:'+inttostr(i3)+#10#13+
'частей:'+inttostr(i4),mtinformation,[mbOk],0 );
end;
и это только начало ;) можно считать АБСОТЮТНО все .
Hmm (2005-02-20 14:01:00) [4]то, что нужно... спасибо за помощь.
YurikGL (2005-02-20 10:55:00) [5]
> еще вопрос, можно ли как то заранее узнать кол-во строк
> в документе?
Строк - не знаю... Параграфов, как и у любой коллекции - можно
Что-то типа
WordApplication1.ActiveDocument.Paragraphs.count
Hmm (2005-02-20 10:16:00) [6]
> WordApplication1.ActiveDocument.Paragraphs.Item(1).Range.Text
то, что нужно... спасибо.
еще вопрос, можно ли как то заранее узнать кол-во строк в документе? на данный момент у меня одна идея останова программы - ловить экспешн EOleException "запрашиваемый номер не сущесвует", есть ли более граммотный способ проверить окончание записей в документе?
YurikGL (2005-02-20 08:26:00) [7]
> Hmm © (19.02.05 23:39) [2]
попробуй что-то типа
WordApplication1.ActiveDocument.Range(2,2).Text;
WordApplication1.ActiveDocument.Paragraphs.Item(1).Range.Text
Hmm (2005-02-19 23:39:00) [8]Хм... собственно, подобные примеры с selection и т.д. я уже видел в изобилии... писать простенькие отчеты в word я умею. Попытки же читатьв некую переменную типа string строку doc-овского файла у меня не досих пор не удавались... я даже не обнаружил каких либо методов, намекающих на чтение...
Если не трудно - черканите пару строк: асоциирование некого файла с wordapplication.(и т.д.) и функцию загоняющую к примеру выделенный текст в переменную.
ЗЫ: сорри если вопросы совсем ламерские.
YurikGL (2005-02-19 23:22:00) [9]
> Возникла проблемма: необходимо читать строки из Word-овского
> файла и писать их в базу.
Если эти строки разделены чем-нибудь, то без проблем. У документа есть свойство абзацы w1.ActiveDocument.Paragraphs. Через него и читай.
Немножко здесь описано. http://www.delphimaster.ru/articles/dbtoword/index.html