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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| #!/usr/local/bin/perl
use strict;
use warnings;
use Spreadsheet::WriteExcel;
# open IN,'<:encoding(utf8)','xxx.utx' or die "$!";
open IN,"<xxx.utx" or die "$!";
# Crée le fichier xls (wb pour workbook)
my $wb=Spreadsheet::WriteExcel->new("Sortie_JDI-2.xls");
# Variable qui définit l'alignement des données
my $centre = $wb->add_format();
$centre->set_align('center');
# Variable qui définit l'alignement TITRE
my $centre_titre = $wb->add_format();
$centre_titre->set_align('center');
$centre_titre -> set_bold ('1');
$centre_titre -> set_valign ('vcenter');
$centre_titre->set_bg_color('cyan');
# Création de la premiere feuille "sommaire"
my $sommaire=$wb->add_worksheet('Tri par N° de commande (N° cde)');
$sommaire->write('A1', 'Date',$centre_titre);
$sommaire->write('B1', 'N° cde', $centre_titre);
$sommaire->write('C1', 'Auteur', $centre_titre);
$sommaire->write('D1', 'Titre',$centre_titre);
$sommaire->write('E1', 'Fournisseur',$centre_titre);
$sommaire->write('F1', 'Prix',$centre_titre);
$sommaire->write('G1', 'Quant.',$centre_titre);
$sommaire->write('H1', 'N° compte',$centre_titre);
$sommaire->write('I1', 'Compte',$centre_titre);
$sommaire->write('J1', 'N° sujet',$centre_titre);
$sommaire->write('K1', 'Sujet',$centre_titre);
# Intercalation de ligne noir/blanc pour les lignes sans parametres
my $intercal = $wb->add_format();
$intercal-> set_bg_color('silver');
$intercal -> set_valign ('vcenter');
# Intercalation de ligne noir/blanc pour les lignes pocédent deja un parametre
my $centInter = $wb->add_format();
$centInter->set_align('center');
$centInter->set_bg_color('silver');
$centInter -> set_valign ('vcenter');
# Fige les volets : 1ere ligne
$sommaire->freeze_panes(1, 0);
my $ligne=1;
# Début du traitement
while (my $line=<IN>)
{
chomp $line;
my @tab = split(/\t/,$line);
if ( length($tab[13]) > 243 ){ $tab[13] = substr($tab[13],0,243); $tab[13] .= "...";}
my $result = $tab[6]."\t".$tab[7]."\t".$tab[5]."\t".$tab[12]."\t".$tab[13]."\t".$tab[8]."\t".$tab[9]."\t".$tab[3]."\t".$tab[4]."\t".$tab[10]."\t".$tab[11];
my @total = $result;
$result ='';
}
@trie = map { join "\t", @$_ }
sort { $a->[1] <=> $b->[1] || $a->[2] cmp $b->[2] }
map { [ split /\t/ ] } @non_trie;
if ($ligne%2!=0){
$sommaire->write($ligne,0,$non_trie[0],$centre); # date
$sommaire->write($ligne,1,$non_trie[1],$centre); # nmr cde + nmr ligne
$sommaire->write($ligne,2,$non_trie[2]); # auteur
$sommaire->write($ligne,3,$non_trie[3]); # titre
$sommaire->write($ligne,4,$non_trie[4]); # fournisseur
$sommaire->write($ligne,5,$non_trie[5],$centre); # prix
$sommaire->write($ligne,6,$non_trie[6],$centre); # quantité
$sommaire->write($ligne,7,$non_trie[7],$centre); # nmr cpt
$sommaire->write($ligne,8,$non_trie[8]); # cpt
$sommaire->write($ligne,9,$non_trie[9],$centre);# nmr sujet
$sommaire->write($ligne,10,$non_trie[10]); # sujet
$ligne++;
}
else {
$sommaire->write($ligne,0,$non_trie[0],$centInter); # date
$sommaire->write($ligne,1,$non_trie[1],$centInter); # nmr cde + nmr ligne
$sommaire->write($ligne,2,$non_trie[2],$intercal); # auteur
$sommaire->write($ligne,3,$non_trie[3],$intercal); # titre
$sommaire->write($ligne,4,$non_trie[4],$intercal); # fournisseur
$sommaire->write($ligne,5,$non_trie[5],$centInter); # prix
$sommaire->write($ligne,6,$non_trie[6],$centInter); # quantit
$sommaire->write($ligne,7,$non_trie[7],$centInter); # nmr cpt
$sommaire->write($ligne,8,$non_trie[8],$intercal); # cpt
$sommaire->write($ligne,9,$non_trie[9],$centInter); # nmr sujet
$sommaire->write($ligne,10,$non_trie[10],$intercal); # sujet
$ligne++;
} |