/[SQL2XLS]/sql2xlsx.cgi
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /sql2xlsx.cgi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2 by dpavlin, Mon Mar 24 15:57:14 2008 UTC revision 4 by dpavlin, Mon Mar 24 23:02:15 2008 UTC
# Line 11  use DBI; Line 11  use DBI;
11  use CGI::Carp qw(fatalsToBrowser);  use CGI::Carp qw(fatalsToBrowser);
12  use CGI qw(path_translated);  use CGI qw(path_translated);
13  use Encode qw/decode/;  use Encode qw/decode/;
14    use Data::Dump qw/dump/;
15    
16  # Connect to DB  # Connect to DB
17  my $connect = "DBI:Pg:dbname=new";  my $connect = "DBI:Pg:dbname=new";
18  my $user = "web";  my $user = "web";
19  my $passwd = "";  my $passwd = "";
20    
21    my $db_encoding = 'iso-8859-2';
22    my $xls_date_format = 'dd.mm.yyyy';
23    
24  my $debug = 1;  my $debug = 1;
25    
26  my $sql_dir = path_translated || '.';  my $sql_dir = path_translated || '.';
# Line 36  if ($0 =~ m/\.cgi$/i) { Line 40  if ($0 =~ m/\.cgi$/i) {
40          $workbook = Spreadsheet::WriteExcel->new("sql_result.xls");          $workbook = Spreadsheet::WriteExcel->new("sql_result.xls");
41  }  }
42    
43    my $date_format = $workbook->add_format(num_format => $xls_date_format);
44    
45  my $dbh = DBI->connect($connect,$user,$passwd) || die $DBI::errstr;  my $dbh = DBI->connect($connect,$user,$passwd) || die $DBI::errstr;
46    
47  sub _c {  sub _c {
48          return decode('iso-8859-2', shift);          return decode( $db_encoding, shift );
49  }  }
50    
51  foreach my $sql_file (@sql_files) {  foreach my $sql_file (@sql_files) {
# Line 59  foreach my $sql_file (@sql_files) { Line 65  foreach my $sql_file (@sql_files) {
65          my $sql = "";          my $sql = "";
66          while(<SQL>) {          while(<SQL>) {
67                  chomp;                  chomp;
68                  if (/^--(.+)/) {                  if (/^\\c\s+(\S+)/) {
69                            warn "## connect to $1\n" if $debug;
70                            $dbh = DBI->connect('DBI:Pg:dbname=' . $1,$user,$passwd) || die $DBI::errstr;
71                    } elsif (/^--(.+)/) {
72                          $comment.=$1;                          $comment.=$1;
73                  } else {                  } else {
74                          $sql.=$_;                          $sql.= ' ' . $_;
75                  }                  }
76          }          }
77          close(SQL);          close(SQL);
78    
79            $sql =~ s/\s\s+/ /gs;
80    
81          print STDERR "sql: $sql\ncomment: $comment\n" if ($debug);          print STDERR "sql: $sql\ncomment: $comment\n" if ($debug);
82    
83          my $row = 0;          my $row = 0;
# Line 92  foreach my $sql_file (@sql_files) { Line 103  foreach my $sql_file (@sql_files) {
103          }          }
104          $row++;          $row++;
105    
106            my @types = map { scalar $dbh->type_info($_)->{TYPE_NAME} } @{ $sth->{TYPE} };
107    
108          while (my @row = $sth->fetchrow_array() ) {          while (my @row = $sth->fetchrow_array() ) {
109                  for(my $col=0; $col<=$#row; $col++) {                  for(my $col=0; $col<=$#row; $col++) {
110                          $worksheet->write($row, $col, _c( $row[$col] ) );                          my $data = $row[$col];
111                            if ( $types[$col] =~ m/^date/i ) {
112                                    $data .= 'T' if $data =~ m/^\d\d\d\d-\d\d-\d\d$/;
113                                    $data =~ s/^(\d\d\d\d-\d\d-\d\d)\s(\d\d:\S+)$/$1T$2/;
114                                    warn "## $data\n";
115                                    $worksheet->write_date_time( $row, $col, $data, $date_format );
116                            } else {
117                                    $worksheet->write($row, $col, _c( $data ) );
118                            }
119                  }                  }
120                  $row++;                  $row++;
121          }          }

Legend:
Removed from v.2  
changed lines
  Added in v.4

  ViewVC Help
Powered by ViewVC 1.1.26