Questione : Perl - Leggere le file di Excel in un allineamento

Sto giocando con il foglio elettronico:: Modulo di BasicRead ed alcuni altri senza fortuna.  Che cosa voglio fare è di fare analizzare lo scritto indicare una lima di supremazia ed ogni fila in un allineamento.  Può qualcuno darmi un certo codice di esempio?

class= del

Risposta : Perl - Leggere le file di Excel in un allineamento

Ho pensato che le osservazioni nel codice fossero sufficienti.  Proverò a spiegare più meglio.

Se non capite le strutture di dati annidate in Perl, suggerirei di esaminare una lezione privata (penso che uno fosse http://www.perltutorial.org/).

Lasciarlo sapere se ci è ancora qualche cosa che non capiate.
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:
# dovreste usare sempre rigoroso e gli avvertimenti per ridurre gli errori nel vostro codice
usare rigoroso;
usare gli avvertimenti;
foglio elettronico di uso:: ParseExcel;
il mio %data;
# generare l'oggetto di analizzatore
mio $parser = foglio elettronico:: ParseExcel->new ();
# aprire la lima dei xls
mio $xls = $parser->parse (“/var/tmp/now.xls ") o muoiono $parser->error ();
# ciclo sopra tutti i manuali nella lima
foreach il mio $sheet ($xls->worksheets ()) {
    mio ($rmin, $rmax) = $sheet->row_range ();
    mio ($cmin, $cmax) = $sheet->col_range ();
    il mio @page;
    per il mio $row ($rmin. $rmax) {
        il mio @line;
        per il mio $col ($cmin. $cmax) {
            mio $cell = $sheet->get_cell ($row, $col);
            spingere il @line, $cell->value () se definito ($cell);
        }
        # il @line ora contiene un allineamento della linea corrente
        spingere il @page, [@line];
    }
    # il @page ora contiene un allineamento degli allineamenti di tutte le linee sul manuale corrente
    # codice di esempio di che cosa da fare con il @page
    foreach il mio $line (@page) {# ciclo sopra ogni linea
       # $line ora è un arrayref
       # stampa ogni linea con gli spazi fra le colonne
       stampa “@$line \ n„;
       # più generalmente, questo potrebbe essere (e potreste sostituire lo spazio con qualunque):
       # la stampa si unisce ('', @$line), “\ n„;
    }
    # esempio di conclusione
    $data {$sheet->get_name ()} = [@page];
}
# %data ora contiene un hash degli allineamenti degli allineamenti di tutti i dati in Excel
# codice di esempio (commentato fuori) di come stampare fuori tutti i dati per tutte le pagine
# foreach il mio $name (chiavi di ordinamento %data) {
#     stampa “manuale $name \ n„;
#     foreach il mio $line (@ {$data {$name}}) {
#         la stampa si unisce ('', @$line), “\ n„;
#     }
#}
Altre soluzioni  
 
programming4us programming4us