[Risolto] Esportazione immagini da calc

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Avatar utente
xergio
Messaggi: 315
Iscritto il: lunedì 15 marzo 2010, 21:54
Località: Arzignano (Vicenza)
Contatta:

[Risolto] Esportazione immagini da calc

Messaggio da xergio »

Ciao a tutti,
chi non muore si rivede :D
Sono un po' arrugginito, si possono esportare le immagini da un foglio di calcolo rilevandone la posizione della cella a cui erano linkati?
Ultima modifica di xergio il sabato 14 gennaio 2017, 9:04, modificato 1 volta in totale.
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
patel
Volontario attivo
Volontario attivo
Messaggi: 4016
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Esportazione immagini da calc

Messaggio da patel »

ti accontenti con questa ?

Codice: Seleziona tutto

Sub ExportImages
sPath = "F:\Download\"
oSheet = ThisComponent.CurrentController.ActiveSheet
For i=0 To oSheet.DrawPage.getCount()-1
   g =  oSheet.Drawpage.getByIndex(i)
   saveGraphic(g.Graphic,ConvertToURL(sPath & g.Name & ".jpg"))
Next
End Sub

Sub saveGraphic(in_obj, out_url)
Dim i(0) As New com.sun.star.beans.PropertyValue
Dim a(1) As New com.sun.star.beans.PropertyValue
Dim p As Object
Dim g As Object
p = createUnoService("com.sun.star.graphic.GraphicProvider")
a(0).Name = "MimeType"
a(0).Value = "image/jpeg"
a(1).Name = "URL"
a(1).Value = out_url
p.storeGraphic(in_obj,a)
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Avatar utente
xergio
Messaggi: 315
Iscritto il: lunedì 15 marzo 2010, 21:54
Località: Arzignano (Vicenza)
Contatta:

Re: Esportazione immagini da calc

Messaggio da xergio »

Ottima, grazie! :bravo:
Poi stanotte avevo risolto (in modo poco elegante sicuro, avendo esportato prima le immagini in una cartella dezippando il file, e in Python), così, ma la tua è molto meglio da OO:

Codice: Seleziona tutto

doc = XSCRIPTCONTEXT.getDocument()
def get_images():
    path = "/home/sergio/customer/Pictures/"
    for s in range(0, doc.Sheets.getCount()-1):
        sheet = doc.Sheets.getByIndex(s)
        draw_page = sheet.getDrawPage()
        for i in range(0, draw_page.getCount()-1):
            file_path = ''
            graphic = draw_page.getByIndex(i)
            cell = sheet.getCellRangeByName(graphic.getAnchor().AbsoluteName)
            mime_type = graphic.Graphic.MimeType
            ext = 'png'
            if mime_type == "image/jpeg":
                ext = 'jpg'
            if mime_type == "image/x-wmf":
                ext = 'wmf'
            file_path = path + \
                graphic.GraphicURL[len(graphic.GraphicURL)-27:] + \
                '.' + ext
            cell.String = file_path
P.S. non credevo che Xray funzionasse ancora con LibO 5.1
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
patel
Volontario attivo
Volontario attivo
Messaggi: 4016
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Esportazione immagini da calc [RISOLTO]

Messaggio da patel »

quasta indica anche le celle (se le immagini son ancorate alle celle)

Codice: Seleziona tutto

Sub ExportImages
Dim s As new com.sun.star.awt.Size
Dim gp As new com.sun.star.awt.Point  
dim acell as object    
'Dim ap As new com.sun.star.awt.Point      
'Dim p As new com.sun.star.awt.Point 
sPath = "F:\Download\"
oSheet = ThisComponent.CurrentController.ActiveSheet
For i=0 To oSheet.DrawPage.getCount()-1
  g =  oSheet.Drawpage.getByIndex(i)
  s = g.getSize()
  gp = g.getPosition()
  aCell = g.anchor
  oConv = ThisComponent.createInstance("com.sun.star.table.CellAddressConversion")
  oConv.Address = aCell.getCellAddress  
  adr = oConv.UserInterfaceRepresentation
  saveGraphic(g.Graphic,ConvertToURL(sPath & g.Name &  "-" & adr & ".jpg"))
Next
End Sub

Sub saveGraphic(in_obj, out_url)
Dim i(0) As New com.sun.star.beans.PropertyValue
Dim a(1) As New com.sun.star.beans.PropertyValue
Dim p As Object
Dim g As Object
p = createUnoService("com.sun.star.graphic.GraphicProvider")
a(0).Name = "MimeType"
a(0).Value = "image/jpeg"
a(1).Name = "URL"
a(1).Value = out_url
p.storeGraphic(in_obj,a)
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Avatar utente
xergio
Messaggi: 315
Iscritto il: lunedì 15 marzo 2010, 21:54
Località: Arzignano (Vicenza)
Contatta:

Re: [Risolto] Esportazione immagini da calc

Messaggio da xergio »

Grazie mille! Ho fatto un paio di modifiche e pulizia, adesso è così per salvare le immagini con il nome del codice prodotto che si trova nella cella a dx e per ciclare tutti i fogli:

Codice: Seleziona tutto

Sub ExportImages
    sPath = "/home/sergio/customer/Pictures/"
    oDoc = ThisComponent
    For s=0 To oDoc.Sheets.getCount()-1
    	oSheet = oDoc.Sheets.getByIndex(s)
    	For i=0 To oSheet.DrawPage.getCount()-1
	      oGraphic = oSheet.Drawpage.getByIndex(i)
	      oCell = oSheet.getCellRangeByName(oGraphic.getAnchor().AbsoluteName)	      
	      address = oCell.CellAddress
	      oRightCell = oSheet.getCellByPosition(address.Column +1, address.Row, s)
	      saveGraphic(oGraphic.Graphic, ConvertToURL(sPath & oRightCell.String & ".jpg"))
	    Next
	Next
End Sub

Sub saveGraphic(in_obj, out_url)
    Dim a(1) As New com.sun.star.beans.PropertyValue
    Dim p As Object
    p = createUnoService("com.sun.star.graphic.GraphicProvider")
    a(0).Name = "MimeType"
    a(0).Value = "image/jpeg"
    a(1).Name = "URL"
    a(1).Value = out_url
    p.storeGraphic(in_obj,a)
End Sub
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
patel
Volontario attivo
Volontario attivo
Messaggi: 4016
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: [Risolto] Esportazione immagini da calc

Messaggio da patel »

Mi sembra che la ruggine sia andata subito via, ottimo lavoro :super:
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Rispondi