可以通过PHP来产生EXCEL档. teaman翻译 
---------------------------- 
Excel Functions 
---------------------------- 
将下面的代码存为excel.php ,然后在页面中包括进来 然后调用 
1. Call xlsBOF() 
2. 将一些内容写入到xlswritenunber() 或者 xlswritelabel()中. 
3.然后调用 Call xlsEOF() 也可以用 fwrite 函数直接写到服务器上,而不是用echo 仅仅在浏览器上显示。 
PHP代码:--------------------------------------------------------------------------------
<?php 
// ----- begin of function library ----- 
// Excel begin of file header 
function xlsBOF() { 
    echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);  
    return; 

// Excel end of file footer 
function xlsEOF() { 
    echo pack("ss", 0x0A, 0x00); 
    return; 

// Function to write a Number (double) into Row, Col 
function xlsWriteNumber($Row, $Col, $Value) { 
    echo pack("sssss", 0x203, 14, $Row, $Col, 0x0); 
    echo pack("d", $Value); 
    return; 

// Function to write a label (text) into Row, Col 
function xlsWriteLabel($Row, $Col, $Value ) { 
    $L = strlen($Value); 
    echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L); 
    echo $Value; 
return; 

// ----- end of function library ----- 
?> //  
// To display the contents directly in a MIME compatible browser  
// add the following lines on TOP of your PHP file: <?php 
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT"); 
header ("Cache-Control: no-cache, must-revalidate");     
header ("Pragma: no-cache");     
header ('Content-type: application/x-msexcel'); 
header ("Content-Disposition: attachment; filename=EmplList.xls" );  
header ("Content-Description: PHP/INTERBASE Generated Data" ); 
// 
// the next lines demonstrate the generation of the Excel stream 
// 
xlsBOF();   // begin Excel stream 
xlsWriteLabel(0,0,"This is a label");  // write a label in A1, use for dates too 
xlsWriteNumber(0,1,9999);  // write a number B1 
xlsEOF(); // close the stream 
?>

解决方案 »

  1.   

    <?php 
    /**************************************************************** 
    * Script         : PHP Simple Excel File Generator - Base Class 
    * Project        : PHP SimpleXlsGen 
    * Author         : Erol Ozcan <[email protected]
    * Version        : 0.2 
    * Copyright      : GNU LGPL 
    * URL            : http://psxlsgen.sourceforge.net 
    * Last modified  : 19 May 2001 
    * Description     : This class is used to generate very simple 
    *   MS Excel file (xls) via PHP. 
    *   The generated xls file can be obtained by web as a stream 
    *   file or can be written under $default_dir path. This package 
    *   is also included mysql, pgsql, oci8 database interaction to 
    *   generate xls files. 
    *   Limitations: 
    *    - Max character size of a text(label) cell is 255 
    *    ( due to MS Excel 5.0 Binary File Format definition ) 

    * Credits        : This class is based on Christian Novak's small 
    *    Excel library functions. 
    ******************************************************************/ if( !defined( "PHP_SIMPLE_XLS_GEN" ) ) { 
       define( "PHP_SIMPLE_XLS_GEN", 1 );    class  PhpSimpleXlsGen { 
          var  $class_ver = "0.2";    // class version 
          var  $xls_data   = "";      // where generated xls be stored 
          var  $default_dir = "";     // default directory to be saved file 
          var  $filename  = "psxlsgen";       // save filename 
          var  $fname    = "";        // filename with full path 
          var  $crow     = 0;         // current row number 
          var  $ccol     = 0;         // current column number 
          var  $totalcol = 0;         // total number of columns 
          var  $get_type = 0;         // 0=stream, 1=file 
          var  $errno    = 0;         // 0=no error 
          var  $error    = "";        // error string 
          var  $dirsep   = "/";       // directory separator 
          var  $header   = 1;         // 0=no header, 1=header line for xls table      // Default constructor 
         function  PhpSimpleXlsGen() 
         { 
           $os = getenv( "OS" ); 
           $temp = getenv( "TEMP"); 
           // check OS and set proper values for some vars. 
           if ( stristr( $os, "Windows" ) ) { 
              $this->default_dir = $temp; 
              $this->dirsep = "\"; 
           } else { 
             // assume that is Unix/Linux 
             $this->default_dir = "/tmp"; 
             $this->dirsep =  "/"; 
           } 
           // begin of the excel file header 
           $this->xls_data = pack( "ssssss", 0x809, 0x08, 0x00,0x10, 0x0, 0x0 ); 
           // check header text 
           if ( $this->header ) { 
             $this->Header(); 
           } 
         }      function Header( $text="" ) { 
            if ( $text == "" ) { 
               $text = "This file was generated using PSXlsGen at ".date("r"); 
            } 
            if ( $this->totalcol < 1 ) { 
              $this->totalcol = 1; 
            } 
            $this->InsertText( $text ); 
            $this->crow += 2; 
            $this->ccol = 0; 
         }      // end of the excel file 
         function End() 
         { 
           $this->xls_data .= pack( "ss", 0x0A, 0x00 ); 
           return; 
         }      // write a Number (double) into row, col 
         function WriteNumber_pos( $row, $col, $value ) 
         { 
            $this->xls_data .= pack( "sssss", 0x0203, 14, $row, $col, 0x00 ); 
            $this->xls_data .= pack( "d", $value ); 
            return; 
         }      // write a label (text) into Row, Col 
         function WriteText_pos( $row, $col, $value ) 
         { 
            $len = strlen( $value ); 
            $this->xls_data .= pack( "s*", 0x0204, 8 + $len, $row, $col, 0x00, $len ); 
            $this->xls_data .= $value; 
            return; 
         }      // insert a number, increment row,col automatically 
         function InsertNumber( $value ) 
         { 
            if ( $this->ccol == $this->totalcol ) { 
               $this->ccol = 0; 
               $this->crow++; 
            } 
            $this->WriteNumber_pos( $this->crow, $this->ccol, &$value ); 
            $this->ccol++; 
            return; 
         }      // insert a number, increment row,col automatically 
         function InsertText( $value ) 
         { 
            if ( $this->ccol == $this->totalcol ) { 
               $this->ccol = 0; 
               $this->crow++; 
            } 
            $this->WriteText_pos( $this->crow, $this->ccol, &$value ); 
            $this->ccol++; 
            return; 
         }      // Change position of row,col 
         function ChangePos( $newrow, $newcol ) 
         { 
            $this->crow = $newrow; 
            $this->ccol = $newcol; 
            return; 
         }      // new line 
         function NewLine() 
         { 
            $this->ccol = 0; 
            $this->crow++; 
            return; 
         }      // send generated xls as stream file 
         function SendFile( $filename ) 
         { 
            $this->filename = $filename; 
            $this->SendFile(); 
         } 
         // send generated xls as stream file 
         function SendFile() 
         { 
            $this->End(); 
            header ( "Expires: Mon, 1 Apr 1974 05:00:00 GMT" ); 
            header ( "Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT" ); 
            header ( "Cache-Control: no-cache, must-revalidate" ); 
            header ( "Pragma: no-cache" ); 
            header ( "Content-type: application/x-msexcel" ); 
            header ( "Content-Disposition: attachment; filename=$this->filename.xls" ); 
            header ( "Content-Description: PHP Generated XLS Data" ); 
            print $this->xls_data; 
         }      // change the default saving directory 
         function ChangeDefaultDir( $newdir ) 
         { 
           $this->default_dir = $newdir; 
           return; 
         }      // Save generated xls file 
         function SaveFile( $filename ) 
         { 
            $this->filename = $filename; 
            $this->SaveFile(); 
         }      // Save generated xls file 
         function SaveFile() 
         { 
            $this->End(); 
            $this->fname = $this->default_dir."$this->dirsep".$this->filename; 
            if ( !stristr( $this->fname, ".xls" ) ) { 
              $this->fname .= ".xls"; 
            } 
            $fp = fopen( $this->fname, "wb" ); 
            fwrite( $fp, $this->xls_data ); 
            fclose( $fp ); 
            return; 
         }      // Get generated xls as specified type 
         function GetXls( $type = 0 ) { 
             if ( !$type && !$this->get_type ) { 
                $this->SendFile(); 
             } else { 
                $this->SaveFile(); 
             } 
         } 
       } // end of the class PHP_SIMPLE_XLS_GEN 

    // end of ifdef PHP_SIMPLE_XLS_GEN 
    <?php 
    /**************************************************************** 
    * Script         : Simple test example for PhpSimpleXlsGen 
    * Project        : PHP SimpleXlsGen 
    * Author         : Erol Ozcan <[email protected]
    * Version        : 0.2 
    * Copyright      : GNU LGPL 
    * URL            : http://psxlsgen.sourceforge.net 
    * Last modified  : 18 May 2001 
    ******************************************************************/ 
    include( "psxlsgen.php" ); $myxls = new PhpSimpleXlsGen(); 
    $myxls->totalcol = 2; 
    $myxls->InsertText( "Erol" ); 
    $myxls->InsertText( "Ozcan" ); 
    $myxls->InsertText( "This text should be at (3,0) if header was used, otherwise at (1,0)" ); 
    $myxls->ChangePos(4,0); 
    $myxls->InsertText( "You must pay" ); 
    $myxls->InsertNumber( 20.48 ); 
    $myxls->WriteText_pos(4,2, "USD to use this class :-))" );         // hidden costs :-)) 
    $myxls->SendFile();