Comment créer un fichier texte afin que, lors de son ouverture dans Excel, les lignes soient regroupées?

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

Question

Je collecte des données via un script Perl. Les données doivent être examinées et traitées par d'autres utilisateurs à l'aide d'Excel. Actuellement, j'écris les données sous forme de fichier texte délimité par des tabulations. Excel peut très bien l'ouvrir.

Cependant, les données sont hiérarchisées et il serait plus facile pour les relecteurs de voir un arbre plutôt qu'une liste simple. Autrement dit, plutôt que de présenter les données sous forme de colonnes,

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

présentez-le sous forme d'arborescence d'agrandissement:

foo
    foo1
    foo2
    foo3
bar
    bar1
    bar2
...

La fonction de groupe d'Excel (trouvée en 2007 sous "Données> Contour & Groupe") correspond bien à cette présentation, car elle est un peu plus simple à utiliser que les tableaux croisés dynamiques.

Quel est le moyen le plus simple pour nous de passer de cette liste de colonnes à une liste groupée? Idéalement, je pourrais écrire les données dans un format texte qu'Excel appliquerait automatiquement le regroupement lors de son importation. Par ailleurs, s’il s’agissait d’un petit nombre d’étapes que le réviseur pourrait appliquer après l’importation des données, par exemple, l’application d’une macro ou d’un modèle, ce serait également acceptable.

Était-ce utile?

La solution

Puisque vous utilisez déjà perl, je vous suggère de créer le fichier Excel directement en perl en utilisant l'excellent module CPAN Spreadsheet :: WriteExcel prenant en charge Excel décrit .

Fonctionne à peu près comme ceci:

     .
     .
     $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);
     .
     .

Autres conseils

  1. Sélectionnez toutes les lignes, y compris les en-têtes de colonne, dans la liste que vous souhaitez filtrer.

    ShowTip   Cliquez sur la cellule en haut à gauche de la plage, puis faites-la glisser vers la cellule en bas à droite.

  2. Dans le menu Données, pointez sur Filtrer, puis cliquez sur Filtre avancé.
  3. Dans la boîte de dialogue Filtre avancé, cliquez sur Filtrer la liste, à sa place.
  4. Cochez la case Enregistrement unique uniquement, puis cliquez sur OK.

    La liste filtrée est affichée et les lignes en double sont masquées.

  5. Dans le menu Edition, cliquez sur Presse-papiers Office.

    Le volet Office Presse-papiers s’affiche.

  6. Assurez-vous que la liste filtrée est toujours sélectionnée, puis cliquez sur le bouton Copier Copier.

    La liste filtrée est mise en surbrillance avec des contours englobants et la sélection apparaît comme un élément en haut du Presse-papiers.

  7. Dans le menu Données, pointez sur Filtrer, puis cliquez sur Afficher tout.

    La liste d'origine est à nouveau affichée.

  8. Appuyez sur la touche SUPPR.

    La liste d'origine est supprimée.

  9. Dans le Presse-papiers, cliquez sur l'élément de la liste filtrée.

    La liste filtrée apparaît au même emplacement que la liste d'origine.

Les versions récentes d'Excel (2003 est ce que nous utilisons ici) peuvent utiliser un format XML, xlsx. Un fichier xlsx est un zip d'un fichier XML. Si vous souhaitez créer un fichier qui s'ouvrira dans Excel avec les paramètres souhaités, essayez ceci: créez d'abord un fichier de modèle avec le groupe souhaité. Enregistrez-le en tant que xlsx. Décompressez le fichier en utilisant votre logiciel zip standard. Regardez ce qu'il y a à l'intérieur. Je n'ai pas travaillé avec le regroupement en particulier, mais toutes les commandes de votre feuille de calcul seront là sous forme xml, vous aurez besoin de savoir où le groupe est défini. Il s’agit ensuite d’apporter les modifications appropriées au fichier XML et de procéder à une nouvelle compression. Un peu d’effort, mais vous pouvez utiliser cette méthode pour créer par programme des fichiers pré-groupés. Il se peut que des bibliothèques Perl soient spécialement conçues pour cela, je ne le sais pas.

Un fichier CSV est également très facile à générer. OpenOffice vous permet de choisir le mode d’analyse des éléments, mais Excel accepte les colonnes délimitées par des virgules (sans aucun type de citation) et les lignes délimitées par CRLF.

A1,A2,A3
B1,B2,B3

etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top