Come faccio a creare un file di testo così quando viene aperto in Excel, le righe sono raggruppate insieme?

StackOverflow https://stackoverflow.com/questions/1038811

Domanda

Sto raccogliendo alcuni dati tramite uno script Perl. I dati devono essere rivisti ed elaborati da altri tramite Excel. Attualmente, sto scrivendo i dati come un file di testo delimitato da tabulazioni ed Excel può aprirlo bene.

Tuttavia, esiste una gerarchia nei dati e sarebbe più facile per i revisori vedere un albero piuttosto che un elenco semplice. Cioè, piuttosto che presentare i dati in colonne,

foo    foo1
foo    foo2
foo    foo3
bar    bar1
bar    bar2
...

presentalo come albero click-to-expand:

foo
    foo1
    foo2
    foo3
bar
    bar1
    bar2
...

La funzione di gruppo di Excel (trovata nel 2007 sotto " Dati & Contorno & Gruppo; ") è una buona corrispondenza per questa presentazione, essendo un po 'più semplice da operare rispetto alle tabelle pivot.

Qual è il modo più semplice per passare da questo elenco semplice di colonne a questo elenco raggruppato? Idealmente, potrei scrivere i dati in un modulo di testo che Excel applicherebbe automaticamente il raggruppamento al momento dell'importazione. In alternativa, se ci fosse un piccolo numero di passaggi che il revisore potrebbe applicare dopo aver importato i dati, come l'applicazione di una macro o un modello, anche questo andrebbe bene.

È stato utile?

Soluzione

Dato che stai già usando perl, ti suggerisco di creare il file excel direttamente in perl usando l'eccellente modulo CPAN Spreadsheet :: WriteExcel che supporta Excel outline .

Funziona in questo modo:

     .
     .
     $worksheet->write('A2',  'foo');
     $worksheet->write('B3',  'foo1');
     $worksheet->write('B4',  'foo2');
     $worksheet->write('B5',  'foo3');
     $worksheet->set_row(2,  undef, undef, 0, 1, 1);
     $worksheet->set_row(3,  undef, undef, 0, 2);
     $worksheet->set_row(4,  undef, undef, 0, 2);
     $worksheet->set_row(5,  undef, undef, 0, 2);
     .
     .

Altri suggerimenti

  1. Seleziona tutte le righe, comprese le intestazioni di colonna, nell'elenco che desideri filtrare.

    ShowTip   Fai clic sulla cella in alto a sinistra dell'intervallo, quindi trascina nella cella in basso a destra.

  2. Dal menu Dati, scegliere Filtro, quindi Filtro avanzato.
  3. Nella finestra di dialogo Filtro avanzato, fai clic su Filtra l'elenco, sul posto.
  4. Seleziona la casella di controllo Solo record univoci, quindi fai clic su OK.

    Viene visualizzato l'elenco filtrato e le righe duplicate sono nascoste.

  5. Nel menu Modifica, fare clic su Appunti di Office.

    Viene visualizzato il riquadro attività Appunti.

  6. Assicurati che l'elenco filtrato sia ancora selezionato, quindi fai clic sul pulsante Copia Copia.

    L'elenco filtrato è evidenziato con contorni delimitati e la selezione appare come un elemento nella parte superiore degli Appunti.

  7. Dal menu Dati, scegliere Filtro, quindi fare clic su Mostra tutto.

    L'elenco originale viene nuovamente visualizzato.

  8. Premi il tasto CANC.

    L'elenco originale è stato eliminato.

  9. Negli Appunti, fai clic sulla voce dell'elenco filtrata.

    L'elenco filtrato appare nella stessa posizione dell'elenco originale.

Le versioni recenti di Excel (2003 è quello che usiamo qui) possono usare un formato XML, xlsx. Un file xlsx è una zip di un file XML. Se vuoi creare un file che si aprirà in Excel con le impostazioni che desideri, prova questo: prima crea un file modello con il raggruppamento che desideri. Salvalo come xlsx. Decomprimi il file usando il tuo software zip standard. Dai un'occhiata a cosa c'è dentro. Non ho lavorato specificamente con il raggruppamento, ma tutti i comandi nel tuo foglio di calcolo saranno presenti in formato XML, dovrai capire dove è impostato il raggruppamento. Quindi si tratta di apportare le modifiche appropriate all'xml e ri-zippare. Un po 'di sforzo, ma è possibile utilizzare questo metodo per creare a livello di codice file che sono pre-raggruppati. Potrebbero esserci delle biblioteche Perl specificamente orientate a questo, non lo so.

Un file CSV è anche molto facile da generare. OpenOffice ti consente di scegliere come analizzare le cose, ma Excel accetta colonne delimitate da virgole (senza alcun tipo di preventivo) e righe delimitate da CRLF.

A1,A2,A3
B1,B2,B3

ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top