❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Alles zur Programmierung im LibreOffice.
-
Marco
- Beiträge: 2
- Registriert: Fr 21. Okt 2011, 12:34
Beitrag
von Marco » Fr 21. Okt 2011, 13:29
Hallo zusammen!
Ich möchte mit der cli-API in C# ein Bild per URL in einem Spreadsheet hinzufügen. Hab dazu auch bereits im OOo-Forum gesucht und auch tatsächlich einige Codebeispiele gefunden, in denen die Images per GraphicObjectShape und XDrawPage eingebunden wurden.
Code: Alles auswählen
var graphicObjectShape = (GraphicObjectShape)_xMultiServiceFactory.createInstance("com.sun.star.drawing.GraphicObjectShape");
graphicObjectShape.Position = ...;
XDrawPage drawPage = (XDrawPage)spreadsheet;
drawPage.add(graphicObjectShape);
Leider fehlt mir aber das
com.sun.star.drawing.GraphicObjectShape im LO-SDK 3.4.3, wobei es zumindest noch in der Doku enthalten ist
Was muss ich machen, um ein Image auf's Spreadsheet zu bekommen?
-
F3K Total
- * LO-Experte *
- Beiträge: 2501
- Registriert: So 10. Apr 2011, 10:10
Beitrag
von F3K Total » Sa 22. Okt 2011, 12:35
Hallo,
mit C# kenne ich mich nicht aus, aber folgender Basic Code funktioniert bei mir unter LO 3.4.3, Windows XP
Code: Alles auswählen
sub insert_bitmap
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
Url_Bitmap=converttourl("C:\Users\Bitmap1.jpg")
size.width = 5000
size.Height =7000
point.Y=200
point.X=300
odoc = thiscomponent
oshape = odoc.createInstance("com.sun.star.drawing.GraphicObjectShape")
with oshape
.name = "Shape1"
.size = size
.position = point()
.GraphicURL = Url_Bitmap
end with
osheet=odoc.currentcontroller.activesheet
opage=osheet.drawpage
opage.add(oshape)
'Wenn das Bild eingebettet werden soll zusätzlich das Folgende:
'oBitmap = odoc.createInstance( "com.sun.star.drawing.BitmapTable" )
'oName = oshape.LinkDisplayName
'If oBitMap.hasByName(oName) Then
'oBitmap.replaceByName( oName, oshape.GraphicURL )
'else
'oBitmap.insertByName( oName, oshape.GraphicURL )
'End If
'oNewURL = oBitmap.getByName( oName )
'oshape.GraphicURL = oNewURL 'Embeddet
end sub
Vermutlich hast Du das entsprechende Sheet vorher nicht gewählt?
Auf alle Fälle gibt es "com.sun.star.drawing.GraphicObjectShape" unter LO 3.4.3
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
-
Marco
- Beiträge: 2
- Registriert: Fr 21. Okt 2011, 12:34
Beitrag
von Marco » Sa 22. Okt 2011, 13:33
Danke. Habs nach einigem Rumprobieren doch noch hinbekommen. Es war das
SpreadsheetDocument, für das ich mir per XMultiServiceFactory das GraphicObjectShape holen muss.
Hier der Sourcecode mit dem ich's hinbekommen hab:
Code: Alles auswählen
XSpreadsheetDocument spreadsheetDoc = ...
// create a new shape for the image
var graphicObjectShape = ((XMultiServiceFactory)spreadsheetDoc).createInstance("com.sun.star.drawing.GraphicObjectShape");
XPropertySet propertySet = (XPropertySet)graphicObjectShape;
propertySet.setPropertyValue("GraphicURL", new uno.Any("file:///c:/myimage.jpg")));
XShape shape = (XShape)graphicObjectShape;
shape.setSize(new unoidl.com.sun.star.awt.Size(800, 600);
// ...and add it on the last page in the spreadsheet document
XDrawPagesSupplier drawPageSupplier = (XDrawPagesSupplier)spreadsheetDoc;
XDrawPages drawPages = drawPageSupplier.getDrawPages();
drawPages.insertNewByIndex(drawPages.getCount()).add(shape);
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.