Tabelle per Makro in Writer erzeugen.

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Tabelle per Makro in Writer erzeugen.

von mike6 » Mo, 02.01.2006 19:14

Hallo,

wäre nett, wenn Du mir das Beispiel mal ins Netz
stellen könntest.

Mann lernt ja immer dazu.


mfg
mike6

von Joke » Mo, 02.01.2006 10:10

Warum eigentlich so kompliziert?

Man kann Tabellen als Textbausteine definieren und dann an jeder beliebigen Stelle des Textes einfügen.

Ich habe zum Beispiel eine Rechnungsvorlage, in der vier verschiedene Tabellen mit unterschiedlichen Berechnungen vorkommen.

Gruß, Joke

D a n k e !!

von mike6 » Mo, 02.01.2006 09:54

Hallo,

vielen Dank für die schnelle und umfangreiche Info.
Hat mir sehr weitergeholfen.


mfg
mike6

von Toxitom » So, 01.01.2006 16:19

Hey Mikle,

na gut, den einfacherern Teil hast du ja schon geschafft, dann ist der Rest auch zu lösen :D

Packen wir es an:
1.) Wie bekomme ich die Umrandung der Tabellen weg ?
Die Umrahmung ist eine Eigenschaft der Tabellenzelle, und die hat bei einer Texttabelle vier Linienobjekte, die alle automatisch gesetzt werden. Willst du also keine Linie, musst du Zelle für Zelle alle Border quasi auf Null setzen! Es gibt zwar auch ein Objekt der Tabelle (TableBorder), ob du das aber einfach auf 0 setzen kannst, weiss ich nicht.
Der Weg wäre : Du definierst dir ein Linienobjekt, da du keine Linie willst, kann dies einfach leer sein:
Dim oLinie as new com.sun.star.table.BorderLine
Das weist du nun dem jeweiligen Zellenobjekt zu (z.B. der Zelle 0,0:
With oTextTable.getCellByPosition(0,0)
.topBorder = oLinie
.leftBorder = oLinie
.rightBorder = oLinie
.bottomBorder = oLinie
end with
So, diese Zelle wäre jetzt ohne LInie. Das solltest du natürlich über Schleifen vereinfachen!

2.) Wie kann ich die Schrift direkt formatieren _( nicht über die Formatvorlage z.B. Überschrift 2 )
Na, so wie du Text direkt formatiert. Textcursor erzeugen, Textcursor (der ja nun ein Textobjektdarstellt) formatieren.
Beispiel: Die Schrift in Zelle (0,0) soll blau werden:

oTextCursor = oTable.getCellByPosition(0,0).createTextCursor()
oTextCursor.gotoEnd(true)
oTextCursor.CharColor = RGB(0, 0, 255)

Da kannst du natürlich auch alle anderen Zeichen- und Absatzeigenschaften direkt setzen.
3.) Wie kann ich die Höhe der Tabellenzeilen festschreiben ( z.B.1,7 cm )
Die hängen automatisch von der Absatzvorlage der Zellinhalte ab, sie werden dynamisch angepasst.
Natürlich kannst du die Zeilen auch manuell manipulieren. Dazu benötigst du zunächst das Zeilenobjekt:

oRow = oDoc.TextTables(0).rows.getByIndex(0)

Hier beispielsweise die erste Reihe der Tabelle.

Jetzt kannst du die Höeh direkt setzen (in 100 stel Milimeter):

oRow.height = 1700 ' entspricht 17 mm = 1,7 cm

Ich hoffe, es hilft erst einmal.

Zusatzfrage.

von mike6 » So, 01.01.2006 11:51

über folgendes Makro schreibe ich eine Tabelle in ein Writer Dokument:
********************************************************************************************
Sub Abstimmung

Dim oDoc as Object

Dim oText as Object

Dim oTextCursor as Object

oDoc = ThisComponent

oText = oDoc.Text

oTextCursor = oText.createTextCursor()

oTextCursor.gotoStart( FALSE )


oText.insertString( oTextCursor, "" , FALSE )

oTextCursor.ParaStyleName = "Überschrift 1"

oText.insertControlCharacter( oTextCursor,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, FALSE )

oTextTable = oDoc.createInstance( "com.sun.star.text.TextTable" )

oTextTable.initialize( 4,2 )

oText.insertTextContent( oTextCursor, oTextTable, FALSE)

oTextTable.getCellByPosition(0,0).String = "Abstimmungsergebnis:"

oTextCursor = oTextTable.getCellByPosition(0,0).createTextCursor()

oTextCursor.ParaStyleName = "Überschrift 1"

oTextCursor.ParaAdjust = com.sun.star.style.ParagraphAdjust.CENTER

oTextTable.getCellByPosition(1,0).BackColor = RGB( 200,200,200 )

oTextTable.getCellByPosition(1,0).String = ""

oTextTable.getCellByPosition(1,0).BackColor = RGB( 200,200,200 )

oTextCursor = oTextTable.getCellByPosition(1,0).createTextCursor()

oTextCursor.ParaStyleName = "Überschrift 1"

oTextCursor.ParaAdjust = com.sun.star.style.ParagraphAdjust.CENTER

oTextTable.getCellByPosition(0,1).String = ""

oTextTable.getCellByPosition(1,1).String = "5 Ja-Stimmen"

oTextTable.getCellByPosition(0,2).String = ""

oTextTable.getCellByPosition(1,2).String = "0 Nein-Stimmen"

oTextTable.getCellByPosition(0,3).String = ""

oTextTable.getCellByPosition(1,3).String = "0 Enthaltungen "

oTextCursor = oTextTable.getCellByPosition(1,1).createTextCursor()
oTextCursor.ParaStyleName = "Überschrift 2"

oTextCursor = oTextTable.getCellByPosition(1,2).createTextCursor()

oTextCursor.ParaStyleName = "Überschrift 2"

oTextCursor = oTextTable.getCellByPosition(1,3).createTextCursor()

oTextCursor.ParaStyleName = "Überschrift 2"

End Sub

********************************************************************************************

Dazu habe ich noch 3 Fragen:

1.) Wie bekomme ich die Umrandung der Tabellen weg ?
2.) Wie kann ich die Schrift direkt formatieren _( nicht über die Formatvorlage z.B. Überschrift 2 )
3.) Wie kann ich die Höhe der Tabellenzeilen festschreiben ( z.B.1,7 cm )

mfg
mike6

von mike6 » Sa, 31.12.2005 17:54

Hallo,

danke für die schnellen und ausführlichen Antworten.


Guten Rutsch in Jahr 2006.



mfg
mike6

von Toxitom » Sa, 31.12.2005 17:05

Hey mike6,

ich hätte da noch einen netten "Lehrtext" zum Erzeugen einer Writer Tabelle. Zu finden unter:

http://www.amt-wiesbaden.de/ooo/Dok_Wri ... zeugen.pdf

(ist nur so zu erreichen - noch nicht weiter verlinkt)
Vielleicht hilft es Dir.

Gruss
Thomas

von ykcim » Sa, 31.12.2005 16:28

Hi,

Tabellen weden als neues Objekt erzeugt und eingefügt.

Code: Alles auswählen

    Doc = thiscomponent
    Cursor = Doc.Text.createTextCursor()
    newtable = doc.createinstance("com.sun.star.text.TextTable")
    newtable.initialize(4,3)
    Doc.Text.insertTextContent(Cursor, newTable, false)


Danach kann man auf die Tabellezellen zugreifen.

mfg
Michael

Guten Rutsch!

Tabelle per Makro in Writer erzeugen.

von mike6 » Sa, 31.12.2005 15:52

Hallo,

wie kann ich in Writer per Makro eine Tabelle erzeugen?
Die Tabelle soll an der Kursor-Position eingefügt werden.

z.B. eine Tabelle mit 4 Zeilen und 3 Spalten.
In der 1. Zeile stehen die Überschriften.

--------------------------
- Name - Text - Wert -
===============
- Müller - bla - 10,00€-
- Schulz- bla - frei -
- Maier - frei - frei -

mfg
mike6

Nach oben