Scripting con file xlsx¶
xlsx.tabs¶
E’ possibile definire un intero report o parti di esso all’interno di file xlsx.
Il metodo xlsx.tabs permette di caricare un file di definizione del report in formato xlsx. Può essere usato più volte e in qualsiasi punto dello script.
Argomenti:
- filename: nome del file xlsx
- sheet => "sheetname": nome del foglio, se non specificato verranno processati tutti i fogli
- sections => true|false: true i nomi dei fogli vengono usati come nome delle sezioni (default); false non genera i comandi section. I nomi dei fogli che inziano per underscore (_) vengono ignorati
- section => "Section name": il nome della sezione se specificato un solo foglio
- action => :syntax|:execute: :syntax genera la sintassi nella finestra di log (default); :execute esegue la sintassi
1 2 | xlsx.tabs "tables_def", sheet: "Sezione 2", :sections => false
xlsx.tabs "tables_def", action: :execute
|
Struttura del file xlsx¶
La funzione autotab di pTabs2 può produrre un file xlsx con la definizione delle tavole e le colonne corrette aggiungendo il parametro :xlsx:
1 | autotab :xlsx => "nomefile"
|
In alternativa o a integrazione di tale file può essere utile utilizzare una tabella che contiene la descrizione delle variabili del file di dati, cioè il nome delle variabili, i codici e le etichette. pTabs2 può produrre una tabella di questo tipo con l’istruzione:
1 | xlsx.save 'bozza', :sheets => :codebook
|
Per ciascuna variabile è possibile aggiungere e modificare le informazioni necessarie per produrre la tavola. Le righe dei livelli possono essere eliminate o lasciate per permettere l’indicazione di pesi, livelli o la modifica delle etichette. Inoltre possono essere aggiunte nuove righe per specificare ulteriori istruzioni.
Colonne della tabella¶
- var o name: nome della variabile o lista delle variabili (le liste possono essere inserite anche utilizzando la funzione s)
- code: codice del livello
- w: peso del livello
- missing elenco dei valori missing
- label: etichetta della variabile o dei livelli. Se valorizzata, verrà prodotta un’istruzione per l’inserimento/modifica dell’etichetta
- cmd: tipo tabella o istruzione ptabs.
Oltre ai tipi di tabelle (cat, ord, md, scale, ecc.) è possibile specificare le seguenti istruzioni:
- weight: se il campo var contiene un valore produrrà l’istruzione weight! nomevar, altrimenti disattiverà la ponderazione: weight_
- syn: inserisce nello script il contenuto dei campi syntax# (se il campo syntax contiene un valore è possibile lasciare vuota la colomma cmd)
- istruzioni pTabs2: l’istruzione verrà unita al contenuto del campo syntax
- +: unisce la definizione alla riga precedente (per esempio: la seconda variabile di una ord, le variabili di una md)
- -: nelle md unisce la definizione alla riga precedente segnalando che la variabile è da considerare come mancata risposta
- #: il tesrto contenuto nella colonna title sarà riportato nel log come commento
- syntax: blocco esplicito di istruzioni pTabs
- Più righe possono essere inserite in nuove colonne syntax# (syntax0 .. syntax99) oppure andando a capo (ALT+ENTER) nella spessa cella.
- Se specificate in corrispondenza di una tabella, le istruzioni saranno inserite nel blocco (do ... end) della tabella.
- title: titolo tabella
- net: net
- panel: identificativo pannello: numero_pannello.posizione_variabile
- skip: ignora la riga
Nota
Foglio: “_campio”¶
var | code | w | missing | label | cmd | syntax | title | net | panel | skip |
---|---|---|---|---|---|---|---|---|---|---|
peso | weight | |||||||||
serr! | ||||||||||
net_pos | :bottom | |||||||||
camp | CAMPIONE | |||||||||
ser_no | ||||||||||
sesso | 1.2 | |||||||||
eta | ord | Tabella Eta’ | 1.1 | |||||||
etaq | + | |||||||||
area | 1.3 |
Foglio: “Sezione 1”¶
var | code | w | missing | label | cmd | syntax | title | net | panel | skip |
---|---|---|---|---|---|---|---|---|---|---|
d1 | cat | Tabella D1 | ||||||||
d2 | cat | Tabella D2 | ||||||||
d5 | 9, 99 | Nuova label D5 | ord | Tabella D5 | n5a (NET D5) | |||||
0 | nil | Non risponde | 1 (NON RISPONDE) | |||||||
1 | 0 | Per niente d’accordo | 2 (NEGATIVO (NET)) | |||||||
2 | 1 | Poco d’accordo | 2 | |||||||
3 | 2 | Abbastanza d’accordo | 3 (POSITIVO (NET)) | |||||||
4 | 3 | Molto d’accordo | 3 | |||||||
# | Questo è un commento | |||||||||
syn | xtab :n5a | |||||||||
n5a | cat |
Foglio: “Sezione 2”¶
var | code | w | missing | label | cmd | syntax | title | net | panel | skip |
---|---|---|---|---|---|---|---|---|---|---|
panels.add | :titolo, :prof | |||||||||
weight | x | |||||||||
scale | Tabella D6 | |||||||||
d6_1 | + | |||||||||
d6_2 | + | |||||||||
d6_3 | IMPARARE NUOVE COSE | + | ||||||||
d6_4 | + | |||||||||
d6_5 | + | |||||||||
d6_6 | + | |||||||||
d6_7 | + | |||||||||
d6_8 | + | |||||||||
d6_9 | + | |||||||||
d6_10 | + | |||||||||
s(:d7_, 1..10) | md | Tabella D7 (versione 1) | ||||||||
md | Tabella D7 (versione 2) | n7 | ||||||||
d7_1 | + | 1 (TOTALE CITAZIIONI) | ||||||||
d7_2 | + | 1 | ||||||||
d7_3 | + | 2 | ||||||||
d7_4 | + | 1,4 (AMICI/FAMIGLIA) | ||||||||
d7_5 | + | 1,3 (SVAGO) | ||||||||
d7_6 | + | 1,3 | ||||||||
d7_7 | + | 1 | ||||||||
d7_8 | + | 1,4 | ||||||||
d7_9 | + | 1,3 | ||||||||
d7_10 | + | 1,3 | ||||||||
+ | none (NESSUNA CITAZIONE) | |||||||||
name | Descrizione |
Output sintassi¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | ### pTabs2 generated syntax ###
panels.add :eta, :sesso, :area
weight! :peso
serr!
net_pos :bottom
camp "CAMPIONE"
ord :eta => :etaq, title: "Tabella Eta'"
section "Sezione 1"
cat :d1, "Tabella D1"
cat :d2, "Tabella D2"
label :d5 => "Nuova label D5"
add_levels :d5 => {0=>"Non risponde", 1=>"Per niente d'accordo", 2=>"Poco d'accordo", 3=>"Abbastanza d'accordo", 4=>"Molto d'accordo"}
missing :d5 => [9, 99]
ord :d5, "Tabella D5" do
net "NON RISPONDE" => [0], "NEGATIVO (NET)" => [1, 2], "POSITIVO (NET)" => [3, 4], :name => :n5a, :label => "NET D5"
w 0=>:na, 1=>0, 2=>1, 3=>2, 4=>3
end
# Questo è un commento
xtab :n5a
cat :n5a
section "Sezione 2"
panels.add :titolo, :prof
label :d6_3 => "IMPARARE NUOVE COSE"
scale s(:d6_,1..10), "Tabella D6"
md s(:d7_,1..8)+[:d7_9,:d7_10], "Tabella D7 (versione 1)"
n7 = nets do
net "TOTALE CITAZIIONI", s(:d7_,1..2,7) do
net "SVAGO", s(:d7_,5..6,9..10)
net "AMICI/FAMIGLIA", s(:d7_,4,8)
end
var :d7_3
none "NESSUNA CITAZIONE"
end
md n7
|