Thread Perl - Excel - CGI (5 answers)
Opened by rucksl at 2004-06-15 15:22

rucksl
 2004-06-15 15:44
#2887 #2887
User since
2004-06-15
13 Artikel
BenutzerIn
[default_avatar]
Okay, hier ein bisschen Code:


Meine Main:
main ();

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
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
sub main () {

#Verwendete Module
use Spreadsheet::WriteExcel; #Modul für die Erstellung von Excel-Dateien



#Variablendeklaration
@ergebnis;
my $dateiname_match = 'match.txt';        #Match-Datei fuer Aufsummieren zwischen CCM und Softguard
my @sum_komponenten_ccm; #Aufsummierte Anzahl der Komponenten CCM
my @sum_komponenten_sg; #Aufsummierte Anzahl der Komponenten SG
my $datum; #Datum wann Dateien erstellt wurden
my $zeit; #Zeit wann Dateien erstellt wurden
       @auswahl;                                                       #Getroffene Auswahl von Auswahl.html
       @bool_auswahl;                                                  #Array, mit Boolean Werten, ob in Auswahl Feld gewählt wurde. Gleicher Aufbau wie CCM und Softguard Abgleich
       @vorgabe_ueberschrift = ("sg.Device" ,"sg.DNS", "sg.Status", "sg.sysDescription", "sg.sysContact", "sg.sysName", "sg.sysLocation", "sg.SNr",
               "sg.FirstReport", "sg.LastReport", "ccm.Identitaet", "ccm.Klasse", "ccm.Hersteller", "ccm.Typ", "ccm.Subtyp", "ccm.Ort", "ccm.Gelaende",
               "ccm.Gebaeude", "ccm.Etage", "ccm.Raum", "ccm.Prefix", "ccm.Postfix", "ccm.Sortierung", "ccm.SNr", "ccm.Status", "ccm.Abgleichskriterium");




#Softguard
@softguard; #Daten von Softguard
@copy_softguard;
my @wrong_sysall; #Fehlerliste für syscontact, syslocation, sysname
my $datenbank = "SoftGuard"; #Bezeichnung der Datenenbank
my $benutzer = "root"; #Benutzer der Datenbank
my $pw = "sg24audi"; #PW des Datenbankusers
my $max_tage = 28; #Maximale Anzahl der Tage, welche seit letzten Report vergangen sein dürfen

#CCM
@ccm; #Daten von CCM
@copy_ccm;


my $datei_ccm = "ccm.txt"; #Bezeichnung der Datei von CCM
my @auswahl_typ = ('6C105', 'AP-3', '1G582-09', '1G587-09', '1G694-13', '1H582-25', '1H582-51', '2E252-49R', '2E253-49R', '2E43-27R', '2H252-25R', '2H253-25R', '2H258-17R',
'MicroMMAC-24E', 'MINI-MMAC', 'MMAC-M8FNB', 'MMAC5-FNB', 'SEHI-24', 'Smart Switch 2200', 'SSR-16', 'SSR-8', 'STHI-24', 'V2H124-24', 'VH-2402SM', 'AL1001B01',
'AL1001B02', 'AL2001A15', 'AL2001B15', 'AL2001B20', 'AL2012A14', 'AL2012B19', 'AL2012B34', 'AL4512B01', 'DJ1402001', 'DS1402001', 'DS1402002', 'EB1404015', 'EB1412003',
'IP 330', 'IP 350', 'IP 380', 'IP 440', 'IP 530', 'NBB3740000', '6E123-26', '6E233-49', '6G306-06', '6H202-24', '6H203-24', '6H252-17', '6H253-13',
'6H258-17', '6H303-48', '6H308-24', '6H308-48', '6H352-25', '7H4382-49', '9C300-1', '9C306', '9C406', '9E106-06', '9E132-15', '9E423-36', '9F206-02', '9F241-12',
'9F426-02', '9F426-03', '9H421-12', '9H422-12', '9H423-28', 'EMME', 'FOMIM-22', 'FOMIM-26', 'FORMIM-22', 'Alteon', 'Base Director', 'SA7225', 'SG 800-2', 'SG 800-3',
'1600', '2501', '2503', '2504', '2612', '7000', '803', 'AGS', 'NSM', 'Backbone Concentrator Node', 'Backbone Link Node');















       print "Content-type: text/html\n\n";

       #Uebergebene Argumente empfangen
read(STDIN, my $tmp, $ENV{'CONTENT_LENGTH'}); #Uebergebenes post lesen
@post_uebergabe = split(/&/, $tmp);

#Uebergebene Daten aufsplitten
foreach(@post_uebergabe) {
($data, $tmp) = split (/=/, $_);
                push @auswahl, $data;
}

       delete ($auswahl[-1]);                                           #Letztes Element ist ok von Buttonklick -->loeschen


      #Einlesen der Daten
chdir ("/usr/local/apache/htdocs/audi_zusatz/"); #Vezeichnis wechseln
&get_softguard(\$datenbank, \$benutzer, \$pw, \$max_tage);
&get_ccm(\$datei_ccm, \@auswahl_typ);

#ABGLEICH SG - CCM
@copy_ccm = @ccm;
@copy_softguard = @softguard;
&abgleich_id();
&abgleich_snr();
&abgleich_dns();
&abgleich_dns_ipname();
&abgleich_snr_cabletron();

       &get_bool_auswahl();
       for ($i=0; $i<26; $i++) {       #Ueberschriftenzeile erzeugen
               push @ueberschrift, $vorgabe_ueberschrift[$i] if ($boolean_auswahl[$i] eq "1");
       }
       
       &make_html();
       &make_excel(\$datum, \$zeit);

exit(0);

}







Der Excel-Schnipsel:

####################################################################################################################################
#  Funktion zum Erstellen der Excel Datei für die einzelnen Komponenten aus CCM
####################################################################################################################################
sub make_excel{
my ($tmp_datum, $tmp_zeit) = @_;
my $dateiname = 'auswahl_abgleich.xls';                #Variable fuer den Dateiname
my $workbook; #Arbeitsmappe in Excel
my $worksheet; #Arbeitsblatt in Excel
my $format_ueberschrift;        #Format fuer Ueberschriften
my $format_std; #Format fuer Standardtabellenschrift
my $format_tab_kopf;         #Format fuer Tabellenkopf
my $i; #Laufvariable fuer Schleife
my $zeile=4; #Aktuelle Zeile, in die geschrieben wird (4 als Start, da darüber der Kopf der Tabelle steht)
       my $anzahl_spalten;                                     #Anzahl der Spalten
       my $spalte = 0;

      chdir ("../zusatz/");

$workbook = Spreadsheet::WriteExcel->new($dateiname);
       $worksheet = $workbook->add_worksheet(); #Worksheet hinzufuegen

&def_format_excel (\$workbook, \$format_ueberschrift, \$format_std, \$format_tab_kopf);

$worksheet->write(0, 0, "Erstellt am $$tmp_datum um $$tmp_zeit", $format_ueberschrift);

$worksheet->set_row(1, 30); #Höhe von 1. Zeile auf 30 setzen
$worksheet->write(1, 0, "Devices Auswahl Abgleich CCM - Softguard", $format_ueberschrift);

#Tabellenkopfzeile (Zeile: 3) schreiben
$worksheet->set_row(3, 25, $format_tab_kopf); #Fuer Zeile 3 Höhe 25 sowie Format setzen
$worksheet->write_row(3, 0, \@ueberschrift);

       $anzahl_spalten = scalar@{$ergebnis[0]};
foreach (@ergebnis) {

        for ($i=0; $i <26; $i++) {
                       if ($boolean_auswahl[$i] eq "1") {
                    $worksheet->write($zeile, $spalte, $_->[$i], $format_std);
                               $spalte++;
                       }
}
$zeile++;
}
}#Ende excel_abgleich


Edit by Erik: Code Tags eingefügt.\n\n

<!--EDIT|[E|B]|1087300379-->

View full thread Perl - Excel - CGI