Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Corba";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];

Вниз

Чтение строк из существующего 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 вся ветка

Форум: "Corba";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.036 c
1-1131426661
BanderLog
2005-11-08 08:11
2005.12.04
ComboBox + Mask


14-1132155231
PZ
2005-11-16 18:33
2005.12.04
Г.Б. Двайт. Таблица интегралов и...


14-1131806272
Prohodil Mimo
2005-11-12 17:37
2005.12.04
Чем можно отконвертировать DOC в PDF ?


2-1132341339
AuBaH
2005-11-18 22:15
2005.12.04
проблема с кнопками


9-1121759123
NewWonder
2005-07-19 11:45
2005.12.04
Выделение в OpenGL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский