/[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 15 by dpavlin, Mon Nov 3 21:39:44 2008 UTC revision 19 by dpavlin, Mon Nov 3 22:29:05 2008 UTC
# Line 85  our $debug = 1; Line 85  our $debug = 1;
85  my $sql_dir = $ENV{SCRIPT_FILENAME} || '.';  my $sql_dir = $ENV{SCRIPT_FILENAME} || '.';
86  $sql_dir =~ s,/[^/]+$,,;  $sql_dir =~ s,/[^/]+$,,;
87    
88  my $config_path = $1 if "$sql_dir/config.pl" =~ m/^(.+)$/; # untaint  sub require_config {
89  warn "# using $config_path\n";          my $config_path = $1 if "$sql_dir/config.pl" =~ m/^(.+)$/; # untaint
90  require $config_path if -e $config_path;          warn "# using $config_path\n";
91            require $config_path if -e $config_path;
92    }
93    
94    require_config;
95    
96  my $reports_path = $ENV{PATH_INFO};  my $reports_path = $ENV{PATH_INFO};
97  $reports_path =~ s/\.\.//g; # some protection against path exploits  $reports_path =~ s/\.\.//g; # some protection against path exploits
98  $reports_path ||= shift @ARGV; # for CLI invocation  $reports_path ||= shift @ARGV; # for CLI invocation
99  $sql_dir .= "/$reports_path" if -e "$sql_dir/$reports_path";  $sql_dir .= "/$reports_path" if -e "$sql_dir/$reports_path";
100    
101    require_config;
102    
103  warn "# reading SQL queries from $sql_dir\n" if $debug;  warn "# reading SQL queries from $sql_dir\n" if $debug;
104    
105  opendir(DIR, $sql_dir) || die "can't opendir $sql_dir: $!";  opendir(DIR, $sql_dir) || die "can't opendir $sql_dir: $!";
# Line 116  my $date_format = $workbook->add_format( Line 122  my $date_format = $workbook->add_format(
122  my $dbh = DBI->connect($dsn . $database,$user,$passwd, { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr;  my $dbh = DBI->connect($dsn . $database,$user,$passwd, { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr;
123    
124  sub _c {  sub _c {
125            return shift unless $db_encoding;
126          return decode( $db_encoding, shift );          return decode( $db_encoding, shift );
127  }  }
128    
# Line 186  foreach my $sql_file (@sql_files) { Line 193  foreach my $sql_file (@sql_files) {
193                          my $data = $row[$col];                          my $data = $row[$col];
194                          if ( $types[$col] =~ m/^date/i ) {                          if ( $types[$col] =~ m/^date/i ) {
195                                  $data .= 'T' if $data =~ m/^\d\d\d\d-\d\d-\d\d$/;                                  $data .= 'T' if $data =~ m/^\d\d\d\d-\d\d-\d\d$/;
196                                  $data =~ s/^(\d\d\d\d-\d\d-\d\d)\s(\d\d:\S+)$/$1T$2/;                                  $data =~ s/^(\d\d\d\d-\d\d-\d\d)\s(\d\d:\d\d:\d\d)$/$1T$2/;
197                                  warn "## $data\n";                                  warn "## by type datetime $data\n";
198                                  $worksheet->write_date_time( $row, $col, $data, $date_format );                                  $worksheet->write_date_time( $row, $col, $data, $date_format );
199                            } elsif ( $data =~ s/^(\d\d\d\d-\d\d-\d\d)[\sT](\d\d:\d\d:\d\d)$/$1T$2/ ) {
200                                    warn "## heuristic date time: $1T$2\n";
201                                    $worksheet->write_date_time( $row, $col, "$1T$2", $date_format );
202                          } else {                          } else {
203                                  $worksheet->write($row, $col, _c( $data ) );                                  $worksheet->write($row, $col, _c( $data ) );
204                          }                          }

Legend:
Removed from v.15  
changed lines
  Added in v.19

  ViewVC Help
Powered by ViewVC 1.1.26