AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Windows API / MS.NET Framework API Delphi Kleine Klasse zum arbeiten mit OpenOffice
Thema durchsuchen
Ansicht
Themen-Optionen

Kleine Klasse zum arbeiten mit OpenOffice

Ein Thema von JoelH · begonnen am 28. Jul 2003 · letzter Beitrag vom 31. Jul 2003
Antwort Antwort
JoelH
(Gast)

n/a Beiträge
 
#1

Kleine Klasse zum arbeiten mit OpenOffice

  Alt 28. Jul 2003, 08:33
Zum automatiseren von OpenOffice Dokumenten. Nur die Basisfunktionen bisher aber das bearbeiten von Vorlagen geht damit wurnderbar.
Delphi-Quellcode:
unit OO_Handling;

// Eine kleine Klasse zum einfachsten Handling von OpenOffice Dokumenten
// Sollte noch um viele Funktionen erweiterbar sein
// hab mal erst nur die Wichtigsten eingebaut
// Diese Funktionen funktionieren auch mit Word .dot Files,
// Das ersetzen geht sogar mit OpenOffice schneller als mit Word selbst.

interface
uses Windows, SysUtils, comobj;

type TOLE_OpenOffice = class(TObject)

private
  // Da OpenOffice Pfadangaben im Unixstyle haben will werden Backslashes umgewandelt
  function ToOOPfad(Pfad:String):String;

protected
  // Das OLE-Objekt, die Desktopinstanz und das Dokument selbst.
  Service, Desktop, Document : Variant;
public
  // Erstellt ein OLE Objekt;
  function Connect: boolean;
  // Oeffnet eine neues Dokument
  function Open:boolean;OVERLOAD;
  // Laden eines forhandenen Dokuments
  function Open(datei:string):boolean;OVERLOAD;
  // Ein Bookmarkfeld ersetzen ( Nicht Case Sensitiv)
  function ErsetzeBookmark(name,inhalt:String):boolean;
end;

implementation

function TOLE_OpenOffice.Connect:boolean;
var
  rueckgabe : boolean;
begin
  try
    Service := CreateOleObject('com.sun.star.ServiceManager');
    Desktop := Service.createInstance('com.sun.star.frame.Desktop');
    rueckgabe := true;
  except
    rueckgabe := false;
  end;
  result := rueckgabe;
end;

function TOLE_OpenOffice.Open:boolean;
var
  rueckgabe : boolean;
begin
  try
    Document := Desktop.LoadComponentFromURL(
              'private:factory/swriter',
              '_blank',
              0,
              VarArrayCreate([0, - 1], varVariant));
    rueckgabe := true;
  except
    rueckgabe := false;
  end;
  result := rueckgabe;
end;

function TOLE_OpenOffice.Open(datei:string):boolean;
var
  rueckgabe : boolean;
begin
  datei := ToOOPfad(datei);
  try
    Document := Desktop.LoadComponentFromURL(
              datei,
              '_blank',
              0,
              VarArrayCreate([0, - 1], varVariant));
    rueckgabe := true;
  except
    rueckgabe := false;
  end;
  result := rueckgabe;
end;

function TOLE_OpenOffice.ToOOPfad(Pfad:String):String;
var
  rueckgabe : string;
  i : integer;
begin
  rueckgabe := 'file:///';
  while (POS('\',pfad)>0) do
  begin
    i := POS('\',pfad);
    delete(pfad,i,1);
    Insert('/',pfad,i);
  end;
  rueckgabe := rueckgabe + pfad;
  result := rueckgabe;
end;

function TOLE_OpenOffice.ErsetzeBookmark(name,inhalt:String):boolean;
var
  objtext, tc, bm, li : Variant;
  i : integer;
  rueckgabe : boolean;
begin
  rueckgabe := false;
  try
    objText := Document.getText;
    tc := objText.createTextcursor;
    li := Document.Bookmarks.getElementNames;
    for i := VarArrayLowBound(li,1) to VarArrayHighBound(li,1) do
    begin
      if (uppercase(li[i]) = uppercase(name)) then
      begin
        bm := Document.Bookmarks.getbyName(li[i]);
        tc := Document.Text.createTextCursorByRange(bm.Anchor);
        tc.string := inhalt;
        rueckgabe := true;
      end;
    end;
  except
    rueckgabe := false;
  end;
  result := rueckgabe;
end;


end.
[edit=Matze]Code formatiert. Mfg, Matze[/edit]
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#2

Re: Kleine Klasse zum arbeiten mit OpenOffice

  Alt 31. Jul 2003, 08:15
neuere Version hab ich da gepostet
http://www.delphipraxis.net/viewtopic.php?p=55469#55469
  Mit Zitat antworten Zitat
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz