Как прочитать или изменить свойства Word документа 2Delphi , Технологии , OLE Automation MSOfficeАвтор: http://www.swissdelphicenter.ch
{ Read MS Word properties via Structured Storage. by Serhiy Perevoznyk } uses ComObj, ActiveX; const FmtID_SummaryInformation: TGUID = '{F29F85E0-4FF9-1068-AB91-08002B27B3D9}'; function FileTimeToDateTimeStr(F: TFileTime): string; var LocalFileTime: TFileTime; SystemTime: TSystemTime; DateTime: TDateTime; begin if Comp(F) = 0 then Result := '-' else begin FileTimeToLocalFileTime(F, LocalFileTime); FileTimeToSystemTime(LocalFileTime, SystemTime); with SystemTime do DateTime := EncodeDate(wYear, wMonth, wDay) + EncodeTime(wHour, wMinute, wSecond, wMilliseconds); Result := DateTimeToStr(DateTime); end; end; function GetDocInfo(const FileName: WideString): string; var I: Integer; PropSetStg: IPropertySetStorage; PropSpec: array[2..19] of TPropSpec; PropStg: IPropertyStorage; PropVariant: array[2..19] of TPropVariant; Rslt: HResult; S: string; Stg: IStorage; begin Result := ''; try OleCheck(StgOpenStorage(PWideChar(FileName), nil, STGM_READ or STGM_SHARE_DENY_WRITE, nil, 0, Stg)); PropSetStg := Stg as IPropertySetStorage; OleCheck(PropSetStg.Open(FmtID_SummaryInformation, STGM_READ or STGM_SHARE_EXCLUSIVE, PropStg)); for I := 2 to 19 do begin PropSpec[I].ulKind := PRSPEC_PROPID; PropSpec[I].PropID := I; end; Rslt := PropStg.ReadMultiple(18, @PropSpec, @PropVariant); OleCheck(Rslt); if Rslt <> S_FALSE then for I := 2 to 19 do begin S := ''; if PropVariant[I].vt = VT_LPSTR then if Assigned(PropVariant[I].pszVal) then S := PropVariant[I].pszVal; case I of 2: S := Format('Title: %s', [S]); 3: S := Format('Subject: %s', [S]); 4: S := Format('Author: %s', [S]); 5: S := Format('Keywords: %s', [S]); 6: S := Format('Comments: %s', [S]); 7: S := Format('Template: %s', [S]); 8: S := Format('Last saved by: %s', [S]); 9: S := Format('Revision number: %s', [S]); 10: S := Format('Total editing time: %g sec', [Comp(PropVariant[I].filetime) / 1.0E9]); 11: S := Format('Last printed: %s', [FileTimeToDateTimeStr(PropVariant[I].filetime)]); 12: S := Format('Create time/date: %s', [FileTimeToDateTimeStr(PropVariant[I].filetime)]); 13: S := Format('Last saved time/date: %s', [FileTimeToDateTimeStr(PropVariant[I].filetime)]); 14: S := Format('Number of pages: %d', [PropVariant[I].lVal]); 15: S := Format('Number of words: %d', [PropVariant[I].lVal]); 16: S := Format('Number of characters: %d', [PropVariant[I].lVal]); 17: ; // thumbnail 18: S := Format('Name of creating application: %s', [S]); 19: S := Format('Security: %.8x', [PropVariant[I].lVal]); end; if S <> '' then Result := Result + S + #13; end; finally end; end; procedure TForm1.Button1Click(Sender: TObject); begin if Opendialog1.Execute then ShowMessage(GetDocInfo(opendialog1.FileName)); end; Программа на Delphi, которая читает свойства файлов Microsoft Word, используя Structured Storage, и отображает их в сообщении. Вот разбивка кода:
Свойства, которые читаются этим программой, следующие: * Title * Subject * Author * Keywords * Comments * Template * Last saved by * Revision number * Total editing time * Last printed * Create time/date * Last saved time/date * Number of pages * Number of words * Number of characters * Name of creating application * Security Эта программа использует units Программа использует функцию Обратите внимание, что эта программа требует установки Microsoft Word на системе, потому что она использует формат файла Word для чтения свойств. Статья 'Как прочитать или изменить свойства Word документа' описывает способ чтения и изменения свойств Microsoft Word-документа 2 с помощью программирования на языке Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: OLE Automation MSOffice ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |