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

Вниз

Как из файла Word вытащить заголовок?   Найти похожие ветки 

 
Viktor1   (2003-09-03 16:52) [0]

В файлах Worda есть такие "вещи": название, тема и т.д.
Вот мне нужен заголовок или название, что одно и тоже.
Помогите или ссылку дайте. Спасибо!!!


 
Viktor1   (2003-09-04 08:29) [1]

Чё ни кто не знает?


 
Viktor1   (2003-09-04 10:27) [2]

Люди есть? Помогите плз!!! :-)


 
[lamer]Barmaglot   (2003-09-04 10:36) [3]

Что значит название-тема? Где они находятся? Можно более конкретно.


 
Viktor1   (2003-09-04 10:43) [4]

пр.кнопка мыши Файл - свойства - закладка сводка - название... тема, автор ...


 
[lamer]Barmaglot   (2003-09-04 10:56) [5]

точно не скажу но смотри здесь, может поможет. Статей по Word там много, стоит только поискать...

http://www.delphikingdom.com/helloworld/msword.htm


 
Viktor1   (2003-09-04 14:24) [6]

Вопрос так и не решил. :-(
Что ещё можно почитать?


 
fool   (2003-09-04 16:12) [7]

const
wdPropertyTitle = $00000001; // название
wdPropertySubject = $00000002; // назначение
wdPropertyAuthor = $00000003; // автор
wdPropertyKeywords = $00000004; // ключевые слова
wdPropertyComments = $00000005; // комментарий
wdPropertyTemplate = $00000006; // шаблон
wdPropertyLastAuthor = $00000007; // автор, последним
// редактировавший текст
wdCollapseStart = $00000001;
// новый объект находится в начале фрагмента
wdCollapseEnd = $00000000;
// новый объект находится в конце фрагмента

procedure TForm1.Button1Click(Sender: TObject);
var
ServerIsRunning : boolean;
Unknown : IUnknown;
Result : HResult;
AppProgID : String;
App : Variant;
Rng, Sel : Variant;
I : Integer;
begin
AppProgID := "Word.Application";
ServerIsRunning := False;
Result :=
GetActiveObject(ProgIDToClassID(AppProgID),nil,Unknown);
if (Result = MK_E_UNAVAILABLE) then
App := CreateOleObject(AppProgID)
else
begin
App := GetActiveOleObject(AppProgID);
ServerIsRunning := True;
end;
App.Visible := True;
//------------------------------------------------------
App.Documents.Add();
App.Documents.Item(1).Activate;
//вставка и форматирование текста
App.ActiveDocument.Paragraphs.Add;
Rng := App.ActiveDocument.Paragraphs.Item(1).Range;
Rng.InsertAfter("вставляемый текст "+Chr(13)+Chr(10));
Rng.InsertAfter("вставляемый текст "+Chr(13)+Chr(10));
Rng.InsertAfter("вставляемый текст "+Chr(13)+Chr(10));
Rng.InsertAfter("вставляемый текст "+Chr(13)+Chr(10));
Rng.InsertAfter("вставляемый текст "+Chr(13)+Chr(10));
App.ActiveDocument.Paragraphs.Item(3).Range.Select;
Sel := App.Selection;
Sel.TypeText("текст, заменяющий выделенный фрагмент");
Sel.TypeParagraph;
Sel.Font.Bold := True;
Sel.TypeText("текст, выделенный полужирным штифтом.");
Sel.Font.Bold := False;
Sel.TypeParagraph;
Sel.Style := "Heading 1";
Sel.TypeText("текст, который станет заголовком");
Sel.TypeParagraph;
//использование буфера обмена
App.ActiveDocument.Paragraphs.Item(3).Range.Select;
Rng := App.Selection.Range;
Rng.Copy;
Rng := App.ActiveDocument.Paragraphs.Item(3).Range;
Rng.Paste;
Rng := App.Selection.Range;
//вставка таблицы
Rng.Collapse(wdCollapseEnd);
Rng.InsertAfter("1, 2, 3");
Rng.InsertParagraphAfter;
Rng.InsertAfter("4,5,6");
Rng.InsertParagraphAfter;
Rng.InsertAfter("7,8,9");
Rng.InsertParagraphAfter;
Rng.ConvertToTable(",");
//свойства
Memo1.Lines.Add("название - " + App.ActiveDocument.
BuiltInDocumentProperties[wdPropertyTitle].Value);
Memo1.Lines.Add("автор - " + App.ActiveDocument.
BuiltInDocumentProperties[wdPropertyAuthor].Value);
Memo1.Lines.Add("шаблон - " + App.ActiveDocument.
BuiltInDocumentProperties[wdPropertyTemplate].Value);
//сохранение
App.ActiveDocument.SaveAs("C:\MyWordFile.doc");
//
//------------------------------------------------------
// if not ServerIsRunning then App.Quit;
App:=Unassigned;
end;

вооще свойств куча, поищи константы в Word_TLB.pas


 
FOX   (2003-09-04 16:47) [8]

Ещё один вариант (не требует наличия word):

procedure TForm1.Button1Click(Sender: TObject);
const fFileName = "d:\tmp\testword\3.doc";
SummaryInformation_GUID: TGUID = "{F29F85E0-4FF9-1068-AB91-08002B27B3D9}";

var FileNameW : PWideChar;
WordDocStorage: IStorage;
SummaryStorage: IPropertySetStorage;
PropertyStorage: IPropertyStorage;
ps: TPropSpec;
pv: TPropVariant;
begin
Memo1.Lines.Clear;
FileNameW := StringToOleStr( fFileName);
try
OleCheck( StgOpenStorage( FileNameW, nil, STGM_READ or STGM_SHARE_EXCLUSIVE, nil, 0, WordDocStorage));
SummaryStorage := WordDocStorage AS IPropertySetStorage;
OleCheck( SummaryStorage.Open( SummaryInformation_GUID, STGM_READ or STGM_SHARE_EXCLUSIVE, PropertyStorage));
ps.ulKind := PRSPEC_PROPID;
ps.propid := PIDSI_TITLE;
PropertyStorage.ReadMultiple(1, @ps, @pv);
Memo1.Lines.Add("Заголовок: " + pv.pszVal);
ps.propid := PIDSI_AUTHOR;
PropertyStorage.ReadMultiple(1, @ps, @pv);
Memo1.Lines.Add("Автор: " + pv.pszVal);
ps.propid := PIDSI_SUBJECT;
PropertyStorage.ReadMultiple(1, @ps, @pv);
Memo1.Lines.Add("Тема: " + pv.pszVal);
ps.propid := PIDSI_KEYWORDS;
PropertyStorage.ReadMultiple(1, @ps, @pv);
Memo1.Lines.Add("Ключевые слова: " + pv.pszVal);
ps.propid := PIDSI_COMMENTS;
PropertyStorage.ReadMultiple(1, @ps, @pv);
Memo1.Lines.Add("Заметки: " + pv.pszVal);
ps.propid := PIDSI_TEMPLATE;
PropertyStorage.ReadMultiple(1, @ps, @pv);
Memo1.Lines.Add("Шаблон: " + pv.pszVal);
ps.propid := PIDSI_LASTAUTHOR;
PropertyStorage.ReadMultiple(1, @ps, @pv);
Memo1.Lines.Add("Автор изменений: " + pv.pszVal);
ps.propid := PIDSI_REVNUMBER;
PropertyStorage.ReadMultiple(1, @ps, @pv);
Memo1.Lines.Add("Редакция: " + pv.pszVal);
.. и т.п.
finally
SysFreeString( FileNameW);
end;
end;



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

Форум: "Основная";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.012 c
14-48733
Delphi5.01
2003-08-26 19:49
2003.09.15
Linux


9-48387
com2003
2003-03-15 02:13
2003.09.15
Вывод графики


14-48775
Vuk
2003-08-25 15:09
2003.09.15
Задачка для component writer-ов. :o)


1-48561
stud
2003-09-04 09:57
2003.09.15
обновление


14-48768
Palladin
2003-08-25 16:26
2003.09.15
Однако :))





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский