Presentazioni PPTX

MODULO AGGIUNTIVO

pptx permette di aprire e modificare una presentazione in formato pptx (PowerPoint).

  • .edit filename|:active: apre il file pptx e restituisce un oggetto che permette di manipolare la presentazione. Utilizzando :active al posto del nome del file, verrà utilizzato il file correntemente aperto in PowerPoint.

    Parametri:

    • :outfile => outfilename: (opzionale) indica il nome del file usato per salvare la presentazione.
    • :back => true|false: (opzionale) crea una copia di backup quando salva il file.

Suggerimento

La presentazione può essere modificata utilizzando direttamente i valori contenuti in un file di dati oppure i valori restituiti dalle tabelle e da xtab.

Un file pptx può esere utilizzato come modello per generare varie presentazioni conteneti i dati aggiornati e/o i dati di specifici target o unità di analisi dell’indagine.

  • .save filename: salva la presentazione. Se non specificato filename utilizza il parametro :outfile di edit. Se nessuno dei due parametri è stato specificato, sovrascrive il file pptx originario.
  • .pdf filename: esporta la presentazione in formato PDF. Se non specificato filename utilizza il parametro :outfile di edit.
  • .close: chiude la presentazione.
  • .quit: chiude PowerPoint.
  • .save_and_reload: salva la presentazione, la chiude, chiude PowerPoint e la riapre.
  • .path: restituisce il percorso del file pptx.
  • .name: restituisce il nome del file pptx.
  • .outfile: restituisce il nome del file di output.
  • .outfile=name: modifica il nome del file di output.
  • .replace(search, replace): cerca e sostituisce il contenuto nei box di testo (non raggruppati) in tutte le slide della presentazione.
1
2
3
4
5
6
7
8
 px = pptx.edit 'Template', :outfile => 'Presentazione1'

 ...

 px.save

 px.close
 px.quit

Slides

Ogni pagina della presentazione è una slide. Impostando una slide, le successive istruzioni relative agli shapes fanno riferimento a quella slide.

  • .size: restituisce il numero totale di slides.
  • .slides: restituisce la collezioni di slide. Possono essere applicati i metodi each, each_with_index, ecc.
    • .dup(n): duplica la slide n subito dopo l’originale, la imposta come slide corrente e la restituisce.
    • .insert: inserisce nella presentazione attiva delle slide proveniente da un’altra presentazione.
      • :at => n: la posizione in cui inserire le slide. Se non indicata, le slide verranno iserite in fondo.
      • :file => "filename": il nome della presentazione da cui copiare le slide.
      • :slides => []: le slide da copiare. Se non indicate verranno copiate tutte le slide presenti.
  • .master: imposta la slide attiva sulla slide master e la restituisce.
  • .slide(number): imposta la slide attiva numero number e la restituisce.
    • .delete: elimina la slide.
    • .replace(search, replace): cerca e sostituisce il contenuto nei box di testo (non raggruppati) nella slide. search può essere una stringa o un’espressione regolare.
    • .to_image: converte tutti gli shape della slide in immagini.
  • .shape(name|id, options={}): restituisce lo shape di qualsiasi tipo per nome o id. Le varianti textbox (o text), table e chart, oltre a rendere più chiaro lo script, generano un errore se lo scape non è del tipo indicato.
  • .find(:textbox|:table|:chart, n|:first|:last): restituisce lo shape del tipo indicato secondo l’ordine dato dalla posizione rispetto al bordo superiore, al bordo sinistro e all’asse z. Nel secondo parametro :first restituisce il primo shape, :last l’ultimo. Sono disponibili anche le varianti .find_textbox (o .find_text), .find_table e .find_chart.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 px.master
 px.replace("Gennaio - Marzo 2018", "Aprile - Giugno 2018")

 px.slide(1)
 px.shape(12).name = "Chart_1_1"
 px.shape(24).name = "Chart_1_2"
 px.shape(16).name = "Table_CS"

 px.slide(3)
 px.table(17).name = "Table_sociodemo"

 px.slides.insert :at => 7, :file => "Overall", :slides => [3,4,8]
 px.slides.dup 10
  • .analyze :slides => number|range|list, :like => text|regex, :show => true|false: stampa nel log una tabella per ciascuna slide con gli elementi (shape) trovati al suo interno.
    • :slide (opzionale) permette di limitare l’output a una o più slide.
    • :like (opzionale) permette di limitare l’output a una o più shape il cui nome inizia per la stringa indicata o è conforme all’espressione regolare.
    • :show (opzionale) stampa all’interno di ciascuno shape il suo ID e il nome.
px.analyze :slide => 1
_images/analyze_output.png

Shapes

I diversi elementi che compongono una slide sono denominati genericamente shape. Tipi di shape più specifici sono quelli che contengono testo (textbox), tabelle (table) e grafici (chart).

  • .info: stampa nel log le informazioni e i dati relativi allo shape.
  • .name = nuovo_nome: rinomina lo shape.
  • .data: restituisce i dati dello shape.
  • .dims: restituisce le informazioni relative alle dimensioni dei dati.
  • .hide: nasconde lo shape.
  • .show: rende visibile lo shape.
  • .delete: elimina lo shape.
  • .refresh: ricarica le informazioni e i dati dello shape.
  • .top: restituisce la posizione dall’alto.
  • .left: restituisce la posizione da sinistra.
  • .width: restituisce la larghezza.
  • .height: restituisce l’altezza.
  • .copy(top, left): fa una copia dello shape e lo sposta alle coordinate top e left.
  • .to_image: converte lo shape in immagine.
  • .quit: chiude lo shape.
1
2
3
 triangle = px.shape(13)
 triangle.rotation      # => 0
 triangle.rotation = 180
px.shape(24).info
_images/shape_info.png

Suggerimento

Si consiglia di usare i metodi analyze e info solo nel lavoro di costruzione dello script e non nello script finale di produzione.

textbox

.textbox(name|id) restituisce l’elemento di testo indicato.

Parametri:

  • name|id: il nome o l’id dello shape.

Metodi:

  • .text: restituisce il testo.
  • .data: restituisce il testo. Se possibile lo converte in numero.
  • .dims: restituisce la lunghezza del test.
  • <<(text): assegna il testo allo shape.
  • .replace(search_text|regex, replace): cerca nel testo dello shape e sostituisce la prima occorrenza trovata. search può essere una stringa o un’espressione regolare. Nel caso di espressione regolare, utilizzando un gruppo verrà sostituito solo il gruppo (il primo).
  • .mreplace(search_text, replace): sostituisce tutte le occorrenze trovate. Non è possibile usare espressioni regolari.
1
2
px.textbox("Titolo 1") << "Nuovo titolo"
px.shape("sc01").replace(/(\d+,\d+)%/, "77,7")

table

.table(name|id, :data => [row, col], :empty => :skip|:keep) restituisce la tabella indicata.

Parametri:

  • name|id: il nome o l’id dello shape.
  • :data: permette di specificare il numero della prima riga di dati e il numero della prima colonna di dati.
  • :empty: permette di escludere (:skip il default) o di includere (:keep) dai dati le righe o colonne vuote.

Metodi:

  • .dims: restituisce il numero di righe e il numero di colonne.
  • .matrix: restituisce l’intera matrice della tabella.
  • .data o .rows: restituisce la marice delle righe dei dati.
  • .columns: restituisce la marice delle colonne dei dati.
  • .column(n): restituisce la colonna numero n dei dati.
  • .set_column(n, data_vector): imposta i dati della colonna n.
  • .row(n): restituisce la riga numero n dei dati.
  • .set_row(n, data_vector): imposta i dati della riga n.
  • <<(value): assegna il valore alla cella (1,1).
  • .cell(nrow, ncol): restituisce la cella indicata.
  • .data_cell(nrow, ncol): restituisce la cella di dati indicata.
    • << o .value=: imposta il valore della cella.
    • fcolor=[red, green, blue]: imposta il colore del testo.
    • bcolor=[red, green, blue]: imposta il colore dello sfondo.
1
2
3
4
x = px.table("Table CS", data: [4, 5])
x.set_column(3, [1, 2, 3, 4, 5, 6.5, 7, 8, 9, 10, 11, 12])
x.cell(1,1).bcolor=[146,208,80]
x.cell(1,2).bcolor=[255,0,0]

chart

.chart(name|id) restituisce il grafico indicato.

Parametri:

  • name|id: il nome o l’id dello shape.

Metodi:

  • .dims: restituisce il numero di righe e il numero di colonne della tabella dei dati.
  • .title: restituisce il titolo del grafico.
  • .title=: modifica il contenuto del titolo del grafico.
  • .corner: restituisce il contenuto del corner della tabella dei dati.
  • .corner=: modifica il contenuto del corner della tabella dei dati.
  • .header: restituisce le intestazioni delle colonne di dati.
  • .set_header=[]: modifica le intestazioni delle colonne di dati.
  • .labels: restituisce le etichette delle righe di dati.
  • .set_labels=[]: modifica le etichette delle righe di dati.
  • .matrix: restituisce l’intera matrice della tabella.
  • .data o .rows: restituisce la marice delle righe dei dati.
  • .columns: restituisce la marice delle colonne dei dati.
  • .column(n): restituisce la colonna numero n dei dati.
  • .set_column(n, data_vector, :force=>true|false): imposta i dati della colonna n. Il parametro :force permette di disabilitare il cotrollo sulla coerenza con il numero di serie e il numero di valori presenti nella tabella.
  • .row(n): restituisce la riga numero n dei dati.
  • .set_row(n, data_vector, :force=>true|false): imposta i dati della riga n.
  • .cell(nrow, ncol): restituisce la cella indicata.
  • .data_cell(nrow, ncol): restituisce la cella di dati indicata.
    • << o .value=: imposta il valore della cella.
  • write(row, col, value): imposta il dato nella cella. E’ un metodo più diretto di scrittura dei dati da preferire in caso di debba scrivere più di una serie di dati.
1
2
3
4
x = px.chart("Chr_20")
x.set_column(2, (1..11).to_a)
x.data_cell(1,3) << "99"
x.quit