von Adsubia » Fr, 03.08.2012 20:16
Hallo,
ich bin zwar ganz neu hier, habe mich aber schon mit OOo beschäftigt.
Ich zeige euch hier mal meinen Code, der ein Writer-Dokument absatzweise ausliest und jeden Absatz auf eine neue Impress-Folie bringen soll:
Code: Alles auswählen
Sub CopyData(source, dest)
Dim pageCnt
Dim actPage
Dim absatz
Dim absEnum 'com.sun.star.container.XEnumerationAccess
absEnum = source.Text.createEnumeration()
Do While absEnum.hasMoreElements()
pageCnt = dest.getDrawPages().getcount()-1
absatz = absEnum.nextElement()
REM Der zurückgegebene Absatz ist entweder ein normaler Absatz oder eine Tabelle
If absatz.supportsService("com.sun.star.text.Paragraph") Then
actPage = dest.DrawPages.insertNewByIndex(pageCnt+1)
actPage.add(absatz)
ElseIf oPar.supportsService("com.sun.star.text.TextTable") Then
actPage = dest.DrawPages.insertNewByIndex(pageCnt+1)
actPage.add(absatz)
End If
Loop
End Sub
source ist die Quell- und dest ist die Zieldatei (.odp). Leider funktioniert der add-Befehl mit übergebenem ausgelesenen Absatz nicht: Er führt zu einer IllegalArgumentException. Wie kann man den Inhalt des Absatzes in eine Impress-Folie bringen? (Nicht wundern, dass ich Paragraph & Table gleich behandle - das ist nur ein Template und wird später evtl. noch unterschieden.)
Vielen Dank schonmal für eure Hilfe!
Hallo,
ich bin zwar ganz neu hier, habe mich aber schon mit OOo beschäftigt.
Ich zeige euch hier mal meinen Code, der ein Writer-Dokument absatzweise ausliest und jeden Absatz auf eine neue Impress-Folie bringen soll:
[code]Sub CopyData(source, dest)
Dim pageCnt
Dim actPage
Dim absatz
Dim absEnum 'com.sun.star.container.XEnumerationAccess
absEnum = source.Text.createEnumeration()
Do While absEnum.hasMoreElements()
pageCnt = dest.getDrawPages().getcount()-1
absatz = absEnum.nextElement()
REM Der zurückgegebene Absatz ist entweder ein normaler Absatz oder eine Tabelle
If absatz.supportsService("com.sun.star.text.Paragraph") Then
actPage = dest.DrawPages.insertNewByIndex(pageCnt+1)
actPage.add(absatz)
ElseIf oPar.supportsService("com.sun.star.text.TextTable") Then
actPage = dest.DrawPages.insertNewByIndex(pageCnt+1)
actPage.add(absatz)
End If
Loop
End Sub[/code]
source ist die Quell- und dest ist die Zieldatei (.odp). Leider funktioniert der add-Befehl mit übergebenem ausgelesenen Absatz nicht: Er führt zu einer IllegalArgumentException. Wie kann man den Inhalt des Absatzes in eine Impress-Folie bringen? (Nicht wundern, dass ich Paragraph & Table gleich behandle - das ist nur ein Template und wird später evtl. noch unterschieden.)
Vielen Dank schonmal für eure Hilfe!