[EMAIL PROTECTED] wrote:


I need to be able to create Microsoft Excel files from a perl script. I want to know which module for doing this that people recommend. I don't need anything too fancy. There will be very little formatting. What formatting I need to do will be column widths and maybe bold and/or underline. I also need to be able to use formulas. Which module do people recommend?

Hi,


I just wrote a script for use with Excel from a database. It writes a csv compliant file. My needs were simple for this particular file so I chose simple methods. I used the column list construct so that I could correctly order the output from the hash, that might be overkill, but I still needed the list of columns so that I could output them a column headers for the spreadsheet. There are modules out there that will give you a much broader range of features as well as an api to work with them. But for quick and dirty, this works fine.

Regards,

Chuck

<code>
sub DoWork
{
   my( $pServer, $pUser, $pPassword, $pStartDate, $pEndDate ) = @_;
   my( $Query );
   my( $Count, $Error, @Rows );
   my( $Line );
   my( @Record );
   my( $statementHandle );
   my( $data );
   my( $output );
   my( @ColumnList );

   $Query =<<EOF;
SELECT
   session_id,
   wr_promo_code,
   start_time = CONVERT( varchar(30), start_time, 109 ),
   end_time = CONVERT( varchar(30), end_time, 109 ),
   ip_address,
   browser_type,
   browser_version,
   user_agent,
   page_set_id,
   user_id,
   error_id
FROM
   web_reg_sessions
WHERE
   start_time >= ?
AND start_time < ?
EOF

@ColumnList = ( "session_id", "wr_promo_code", "start_time", "end_time", "ip_address", "browser_type", "browser_version", "user_agent",
"page_set_id", "user_id", "error_id" );


$Connection = DBI->connect( "dbi:Sybase:server=$pServer;database=web_reg", $pUser, $pPassword );

   $statementHandle = $Connection->prepare( $Query )
       or die "Count prepare statement: " . $dbh->errstr;

   $statementHandle->execute( $pStartDate, $pEndDate )
       or die "Couldn't execute statement: " . $statementHandle->errstr;

   print $OUT join( ",", @ColumnList );
   print $OUT "\n";

   while( $data = $statementHandle->fetchrow_hashref() )
   {
       $output = "";
       foreach $column ( @ColumnList )
       {
           if( $column eq "start_time" || $column eq "end_time" )
           {
               $tmp = $data->{$column};
               $tmp =~ s/  / /g;
               $tmp =~ s/ /-/g;
               $tmp =~ s/:000//;
               $output .= "\"" . $tmp . "\",";
           }
           else
           {
               $output .= "\"" . $data->{$column} . "\"";
               $output .= "," if $column ne $ColumnList[$#ColumList];
           }
       }
       print $OUT "$output\n";
   }
   $statementHandle->finish;
}

</code>


-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to