Writer Dokument Bearbeiten und Texte einfügen?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Writer Dokument Bearbeiten und Texte einfügen?

Beitrag von MikeRo »

Hallo, ich finde nicht so recht einen Ansatz.

Ich fange gerade an ein neues Makro zu schreiben. Dieses mal muss ich ein Angebot in einem Writer Dokument erstellen. Es gibt eine Vorlage die ich nutze und in der an bestimmten stellen aus der Datenbank Daten eingefügt werden müssen (Adresse, Ansprechpartner etc...) Bei Calc Dokumenten ist das ja absolut kein Problem, aber wie mache ich es bei Writer Dokumenten? Muss ich mir Marken Setzen, und dann diese dann mit einem suchen und ersetzen Makro mit den Daten überspielen? Oder wie kann ich sonst auf die entsprechenden Stellen zugreifen? Immerhin habe ich ja nicht einfach nur Adressen wie bei Calc.

Vielen dank schon mal für jeden Tipp.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Writer Dokument Bearbeiten und Texte einfügen?

Beitrag von DPunch »

Aloha

Der Weg, den ich bei derlei Dingen empfehlen würde, ist der über Platzhalter (Placeholder), die den gleichen Namen wie die korrespondierenden Datenbankspalten tragen.
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Writer Dokument Bearbeiten und Texte einfügen?

Beitrag von MikeRo »

Okay, dann lege ich mir Platzhalter ins Dokument und ersetze diese mit der replace Funktion.
Aber was ist, wenn der Text eine bestimmte Formatierung haben muss?
Wird die Formatierung beim ersetzen übernommen?
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Writer Dokument Bearbeiten und Texte einfügen?

Beitrag von DPunch »

Aloha

Du kannst die Platzhalter nach Belieben formatieren, da geht nichts verloren.

Nicht per "Replace" ersetzen, sondern per Placeholder.Anchor.String.
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Writer Dokument Bearbeiten und Texte einfügen?

Beitrag von MikeRo »

Ich habe es nun so gelöst.

Code: Alles auswählen

Sub AB_FK_AdressdatenEinfuegen

	globalScope.BasicLibraries.loadLibrary("Tools")  
	dim aPlatzhalter() 'LIste der Platzhalter
	aPlatzhalter = array("<$Adressdaten1$>")
	dim aInhalt(uBound(aPlatzhalter))		'Liste der zu ersetzenden Texte
rem---DB Abfrage der Adressdaten

Call AB_FK_SQL
   		
	   		oStatement = oCon.createStatement()
    	  	oResult = oStatement.executeQuery(AB_SQL_Adresskopf)
           
   	   	IF NOT ISNULL(oResult) THEN
   			Do while oResult.Next
	       
		
		VAR_Abfragedaten = 	oResult.getString(1) & chr(10) &_
							oResult.getString(2) & chr(10 &_
							oResult.getString(3) & chr(10) &_
							oResult.getString(4) 

 		Loop		   		
		   		
		End If	

	aInhalt(0) = VAR_Abfragedaten
	REM Eintragen der Inhalte
	for i = 0 to uBound(aPlatzhalter())
		AB_FK_trageEin(oDoc, aInhalt(i), aPlatzhalter(i)
	next
	
End Sub

Code: Alles auswählen

Sub AB_FK_trageEin(oDoc as object, sNeuTxt as string, sPlatzhalter as string)

	oSuche = oDoc.createReplaceDescriptor()
	with oSuche
		.setSearchString(sPlatzhalter)
		.setReplaceString(sNeuTxt)
	end with
	oDoc.replaceAll(oSuche)

End Sub
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Writer Dokument Bearbeiten und Texte einfügen?

Beitrag von DPunch »

Aloha

Das ist auch eine Möglichkeit, ersetzt Dir aber alle Vorkommen, ob nun relevante Felder oder nicht.
Zudem bietet sich z.B. nicht die einfache Möglichkeit, z.B. Platzhalter für Bilder zu definieren.
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Writer Dokument Bearbeiten und Texte einfügen?

Beitrag von MikeRo »

Platzhalter einfügen ist ja kein Problem. Aber wie spreche ich diese an und ersetze Sie?
Speziell bei Grafiken?
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Writer Dokument Bearbeiten und Texte einfügen?

Beitrag von DPunch »

Aloha

Code: Alles auswählen

enumTextFields = thisComponent.TextFields.createEnumeration
Do While enumTextFields.hasMoreElements
  thisTextField = enumTextFields.NextElement
  If thisTextField.supportsService("com.sun.star.text.textfield.JumpEdit") Then
    'REM Platzhalter gefunden
  End If
Loop
Loop
Antworten