Schrift
[thread]484[/thread]

Spreadsheet::WriteExcel: neues Sheet nach X Zeilen oder Trennzeic



<< >> 6 Einträge, 1 Seite
mumu2000
 2005-04-25 17:58
#4877 #4877
User since
2005-04-25
2 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich bin leider ein ziemlicher Perl-Noob aber zum Auswerten eines Fragebogens benötige ich ein Perl-Skript.
Ich habe bereits ein Perl Skript erstellt das die Daten des Fragebogens als *.txt (immer Frage und Antwort untereinander getrennt durch "+"-Zeichen) auf dem Server ablegt. Jetzt habe ich mir noch ein Skript zusammengebastelt das Frage und Antwort in ein Excel Dokument schreibt (A1:Frage,B1:Antwort,A2:Frage,B2:Antwort,usw.). In der jetzigen Form wird im Excel Dokument alle 220 Zeilen wieder eine neue Spalte angefangen(A3:Frage,B3:Antwort). Allerdings möchte ich das nach einer gewissen Anzahl von Zeilen oder nach einem bestimmten Trennzeichen(sobald in dem *.txt die Ergebnisse eines neuen Befragten anfangen) ein neues Sheet innerhalb der Excel Datei angefangen wird.


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
#!usr/bin/perl -w 

use strict;
use warnings;

my $IN  = "daten.txt";  
my $OUT = "auswertung.xls";
 

use Spreadsheet::WriteExcel;
open IN, "<$IN" or die "Fehler beim Oeffnen von $IN";

my @eintraege = ();

while(<IN>) {
   chomp;
   my($frage, $antwort) = split /+/, $_, 2;
   $antwort ||= "";
   push @entries, [$frage, $antwort];
}

close IN;


my $xlsdat   = Spreadsheet::WriteExcel->new($OUT);
my $sheet  = $xlsdat->addworksheet();


for my $col (0..2) {
   for my $row (0..220) {
       my $e = shift @entries;
       last unless $e;    
       my($frage, $antwort) = @$e;
           
           # Eintrag schreiben
       $sheet->write($row, 2*$col,
                    "$frage - $antwort");
   }
}
for my $col (0..2) {
       
       
   $sheet->set_column(2*$col, 2*$col);
}
$xlsdat->close();


Ich bin für jede Hilfe dankbar!
GwenDragon
 2005-04-25 18:07
#4878 #4878
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
set_v_pagebreaks(@breaks)

Add vertical page breaks to a worksheet. A page break causes all the data that follows it to be printed on the next page. Vertical page breaks act between columns. To create a page break between columns 20 and 21 you must specify the break at column 21. However in zero index notation this is actually column 20. So you can pretend for a small while that you are using 1 index notation:

   $worksheet1->set_v_pagebreaks(20); # Break between column 20 and 21

The set_v_pagebreaks() method will accept a list of page breaks and you can call it more than once:

   $worksheet2->set_v_pagebreaks( 20,  40,  60,  80, 100); # Add breaks
   $worksheet2->set_v_pagebreaks(120, 140, 160, 180, 200); # Add some more

Note: If you specify the ``fit to page'' option via the fit_to_pages() method it will override all manual page breaks.


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
my($frage, $antwort) = @$e; 
         
          # Eintrag schreiben
     
#----------     So könnte es gehen! ------------
      if ($frage =~ /^###BREAK###/) {
         set_v_pagebreaks( $row++ );
         next;
      }
#----------

      $sheet->write($row, 2*$col,
                   "$frage - $antwort");
\n\n

<!--EDIT|GwenDragon|1114438444-->
renee
 2005-04-25 18:17
#4879 #4879
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du kannst auch mit meinem Modul CPAN:Spreadsheet::SimpleExcel arbeiten. Da gibt es die Option zu sagen, nach wieviel Zeilen eine neue Mappe (Sheet) angefangen werden soll...
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/
GwenDragon
 2005-04-25 18:22
#4880 #4880
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Reden wir doch mal Deutsch. Was denn nun, einen Seitenumbruch oder eine komplett neue Tabelle?
steffenw
 2005-04-25 22:34
#4881 #4881
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=mumu2000,25.04.2005, 15:58]... ein neues Sheet innerhalb der Excel Datei angefangen wird.[/quote]
Er schreibt es eindeutig @GwenDragon - Sheet.
$SIG{USER} = sub {love 'Perl' or die};
mumu2000
 2005-04-26 14:53
#4882 #4882
User since
2005-04-25
2 Artikel
BenutzerIn
[default_avatar]
Vielen Dank für die Hilfe,
bin aber irgendwie daran gescheitert das genau auf meine Bedürfnisse abzustimmen. Naja ich übertrage jetzt die Daten einfach in ein einzelnes Sheet. Die Auswertungs nehme ich dann sowieso in einem Anderen vor, in dem ich mir dann die Daten aus dem ersten mit den entsprechenden Formeln ziehe.
<< >> 6 Einträge, 1 Seite



View all threads created 2005-04-25 17:58.