Форум: "Основная";
Текущий архив: 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