Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]350[/thread]

2 excel tabellen vergleichen als csv



<< >> 5 Einträge, 1 Seite
Gast Gast
 2004-08-10 00:25
#3390 #3390
ich habe folgende Aufgabe gestellt bekommen: ich soll 2 csv tabellen aus excel exportiert vergleichen. Es sollen jeweils 2 Zeilen verglichen werden, welche aber unterschiedlich positioniert sind in den Dateien. Es gibt immer die 3 ersten Spalten (Werte), die fest sind, also als Identifier dienen können. Wert 4 und 5 müssen dann verglichen werden.

Das Programm soll ausspucken, ob sich was in der 2 datei in der Zeile geändert hat. Oder wenn keine entsprechende Zeile gefunden wurde in Datei 2 , dass diese gelöscht wurde. Alle übriggebliebenen in Datei 2 sollen als neu angezeigt werden.

Ich hab bis jetzt noch keinerlei Ahnung, wie ich das bewerkstelligen soll, kann mir jemand, wenns geht mit etwas code aushelfen, auf die Sprünge helfen? Brauche leider schon morgen früh ein Lösung.

Danke Maren!
renee
 2004-08-10 02:19
#3391 #3391
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
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
use Tie::File;

my $origin = '/path/to/test.csv';
my $check = '/path/to/check.csv';
my @array = ();

tie @array,'Tie::File',$origin;
open(READCHECK,"<$check") or die $!;
while(my $line = <READCHECK>){
my ($col1,$col2,$col3,$col4,$col5,@rest) = split(/;/,$line);
my $key = $col1.$col2.$col3;
my $b_check = 0;
foreach(@array){
my ($r1,$r2,$r3,$r4,$r5,@rest) = split(/;/,$_);
if($key eq $r1.$r2.$r3){
$b_check = 1;
unless($col4 eq $r4){
print "Spalten 4 sind unterschiedlich\n";
}
unless($col5 eq $r5){
print "Spalten 5 sind unterschiedlich\n";
}
}
unless($b_check){
print "Zeile $line gibt's nicht mehr\n";
}
}
}
close READCHECK;
untie @array;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
steffenw
 2004-08-10 23:37
#3392 #3392
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
split(/;/,$line)
paßt meistens, aber richtig ist es nur mit Text::CSV_XS
$SIG{USER} = sub {love 'Perl' or die};
renee
 2004-08-11 00:20
#3393 #3393
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ok, das Modul kannte ich nicht... Werde ich mir mal anschauen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
steffenw
 2004-08-11 09:45
#3394 #3394
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Es gibt auch Text::CSV, also reines Perl oder auch DBD::CSV.
$SIG{USER} = sub {love 'Perl' or die};
<< >> 5 Einträge, 1 Seite



View all threads created 2004-08-10 00:25.