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

Вниз

Как из файла 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.048 c
4-48834
mm0
2003-07-14 07:42
2003.09.15
Вопрос про hDC


14-48741
Steven
2003-08-27 17:54
2003.09.15
ModelMaker


3-48460
Shnidke
2003-08-18 00:28
2003.09.15
Проверка на ввод данных


3-48408
Dmitry111
2003-08-26 10:43
2003.09.15
Operation not applicable


14-48708
DeMoN-777
2003-08-28 13:57
2003.09.15
Интересуюсь...