Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.04;
Скачать: CL | DM;

Вниз

Чтение строк из существующего doc-файла (word)... как?   Найти похожие ветки 

 
Hmm ©   (2005-02-19 22:46) [0]

Здраствуйте уважаемые.

Возникла проблемма: необходимо читать строки из Word-овского файла и писать их в базу. Собственно, порылся в доступных мне книжках, нашел кучу инфы по созданию и записи в *.doc через WordApplication... как быть с чтением из уже существующего файла?

Буду благодарен любой инфе: пример, ссылка на статью... заранее спасибо.


 
YurikGL ©   (2005-02-19 23:22) [1]


> Возникла проблемма: необходимо читать строки из Word-овского
> файла и писать их в базу.

Если эти строки разделены чем-нибудь, то без проблем. У документа есть свойство абзацы w1.ActiveDocument.Paragraphs. Через него и читай.

Немножко здесь описано. http://www.delphimaster.ru/articles/dbtoword/index.html


 
Hmm ©   (2005-02-19 23:39) [2]

Хм... собственно, подобные примеры с selection и т.д. я уже видел в изобилии... писать простенькие отчеты в word я умею. Попытки же читать в некую переменную типа string строку doc-овского файла у меня не досих пор не удавались... я даже не обнаружил каких либо методов, намекающих на чтение...

Если не трудно - черканите пару строк: асоциирование некого файла с wordapplication.(и т.д.) и функцию загоняющую к примеру выделенный текст в переменную.

ЗЫ: сорри если вопросы совсем ламерские.


 
YurikGL ©   (2005-02-20 08:26) [3]


> Hmm ©   (19.02.05 23:39) [2]

попробуй что-то типа

WordApplication1.ActiveDocument.Range(2,2).Text;
WordApplication1.ActiveDocument.Paragraphs.Item(1).Range.Text


 
Hmm ©   (2005-02-20 10:16) [4]


> WordApplication1.ActiveDocument.Paragraphs.Item(1).Range.Text

то, что нужно... спасибо.

еще вопрос, можно ли как то заранее узнать кол-во строк в документе? на данный момент у меня одна идея останова программы - ловить экспешн EOleException "запрашиваемый номер не сущесвует", есть ли более граммотный способ проверить окончание записей в документе?


 
YurikGL ©   (2005-02-20 10:55) [5]


> еще вопрос, можно ли как то заранее узнать кол-во строк
> в документе?

Строк - не знаю... Параграфов, как и у любой коллекции - можно

Что-то типа
WordApplication1.ActiveDocument.Paragraphs.count


 
Hmm ©   (2005-02-20 14:01) [6]

то, что нужно... спасибо за помощь.


 
GanibalLector ©   (2005-02-20 14:38) [7]


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;

и это только начало ;) можно считать АБСОТЮТНО все .


 
YurikGL ©   (2005-02-20 14:41) [8]


>   i4 := WordApp.ActiveDocument.Sections.Count;

А что за секции? Просто интересно...


 
GanibalLector ©   (2005-02-20 15:22) [9]

>А что за секции? Просто интересно...
Да,ХЕЗ.Обычный интерфейс...
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;




Страницы: 1 вся ветка

Текущий архив: 2005.12.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
14-1131600217
ZeroDivide
2005-11-10 08:23
2005.12.04
Что за контора такая: ОЛДИ (Москва)


9-1121668182
Psiops
2005-07-18 10:29
2005.12.04
Кто знает как выдернуть модели из Far Cry


14-1131753275
Германн
2005-11-12 02:54
2005.12.04
Ну наконец-то я опять имею доступ в ИНЕТ из дома!


1-1131351866
Mitchy
2005-11-07 11:24
2005.12.04
Загрузить форму из библиотеки в осн. приложение


2-1132160196
Era
2005-11-16 19:56
2005.12.04
Сервисы