| 418 | aurelien | 1 | <?php
 | 
        
           |  |  | 2 | /*
 | 
        
           |  |  | 3 | *  Module written/ported by Xavier Noguer <xnoguer@rezebra.com>
 | 
        
           |  |  | 4 | *
 | 
        
           |  |  | 5 | *  PERL Spreadsheet::WriteExcel module.
 | 
        
           |  |  | 6 | *
 | 
        
           | 1604 | raphael | 7 | *  The author of the Spreadsheet::WriteExcel module is John McNamara
 | 
        
           | 418 | aurelien | 8 | *  <jmcnamara@cpan.org>
 | 
        
           |  |  | 9 | *
 | 
        
           |  |  | 10 | *  I _DO_ maintain this code, and John McNamara has nothing to do with the
 | 
        
           |  |  | 11 | *  porting of this code to PHP.  Any questions directly related to this
 | 
        
           |  |  | 12 | *  class library should be directed to me.
 | 
        
           |  |  | 13 | *
 | 
        
           |  |  | 14 | *  License Information:
 | 
        
           |  |  | 15 | *
 | 
        
           |  |  | 16 | *    Spreadsheet_Excel_Writer:  A library for generating Excel Spreadsheets
 | 
        
           |  |  | 17 | *    Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
 | 
        
           |  |  | 18 | *
 | 
        
           |  |  | 19 | *    This library is free software; you can redistribute it and/or
 | 
        
           |  |  | 20 | *    modify it under the terms of the GNU Lesser General Public
 | 
        
           |  |  | 21 | *    License as published by the Free Software Foundation; either
 | 
        
           |  |  | 22 | *    version 2.1 of the License, or (at your option) any later version.
 | 
        
           |  |  | 23 | *
 | 
        
           |  |  | 24 | *    This library is distributed in the hope that it will be useful,
 | 
        
           |  |  | 25 | *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
        
           |  |  | 26 | *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
        
           |  |  | 27 | *    Lesser General Public License for more details.
 | 
        
           |  |  | 28 | *
 | 
        
           |  |  | 29 | *    You should have received a copy of the GNU Lesser General Public
 | 
        
           |  |  | 30 | *    License along with this library; if not, write to the Free Software
 | 
        
           |  |  | 31 | *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
        
           |  |  | 32 | */
 | 
        
           |  |  | 33 |   | 
        
           | 1604 | raphael | 34 | require_once 'PEAR.php';
 | 
        
           |  |  | 35 | require_once 'Spreadsheet/Excel/Writer/Workbook.php';
 | 
        
           | 418 | aurelien | 36 |   | 
        
           |  |  | 37 | /**
 | 
        
           |  |  | 38 | * Class for writing Excel Spreadsheets. This class should change COMPLETELY.
 | 
        
           |  |  | 39 | *
 | 
        
           |  |  | 40 | * @author   Xavier Noguer <xnoguer@rezebra.com>
 | 
        
           |  |  | 41 | * @category FileFormats
 | 
        
           |  |  | 42 | * @package  Spreadsheet_Excel_Writer
 | 
        
           |  |  | 43 | */
 | 
        
           |  |  | 44 |   | 
        
           |  |  | 45 | class Spreadsheet_Excel_Writer extends Spreadsheet_Excel_Writer_Workbook
 | 
        
           |  |  | 46 | {
 | 
        
           |  |  | 47 |     /**
 | 
        
           |  |  | 48 |     * The constructor. It just creates a Workbook
 | 
        
           |  |  | 49 |     *
 | 
        
           |  |  | 50 |     * @param string $filename The optional filename for the Workbook.
 | 
        
           |  |  | 51 |     * @return Spreadsheet_Excel_Writer_Workbook The Workbook created
 | 
        
           |  |  | 52 |     */
 | 
        
           |  |  | 53 |     function Spreadsheet_Excel_Writer($filename = '')
 | 
        
           |  |  | 54 |     {
 | 
        
           |  |  | 55 |         $this->_filename = $filename;
 | 
        
           |  |  | 56 |         $this->Spreadsheet_Excel_Writer_Workbook($filename);
 | 
        
           |  |  | 57 |     }
 | 
        
           |  |  | 58 |   | 
        
           |  |  | 59 |     /**
 | 
        
           |  |  | 60 |     * Send HTTP headers for the Excel file.
 | 
        
           |  |  | 61 |     *
 | 
        
           |  |  | 62 |     * @param string $filename The filename to use for HTTP headers
 | 
        
           |  |  | 63 |     * @access public
 | 
        
           |  |  | 64 |     */
 | 
        
           |  |  | 65 |     function send($filename)
 | 
        
           |  |  | 66 |     {
 | 
        
           |  |  | 67 |         header("Content-type: application/vnd.ms-excel");
 | 
        
           | 1604 | raphael | 68 |         header("Content-Disposition: attachment; filename=\"$filename\"");
 | 
        
           | 418 | aurelien | 69 |         header("Expires: 0");
 | 
        
           |  |  | 70 |         header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
 | 
        
           |  |  | 71 |         header("Pragma: public");
 | 
        
           |  |  | 72 |     }
 | 
        
           |  |  | 73 |   | 
        
           | 1604 | raphael | 74 |     /**
 | 
        
           |  |  | 75 |     * Utility function for writing formulas
 | 
        
           |  |  | 76 |     * Converts a cell's coordinates to the A1 format.
 | 
        
           |  |  | 77 |     *
 | 
        
           |  |  | 78 |     * @access public
 | 
        
           |  |  | 79 |     * @static
 | 
        
           |  |  | 80 |     * @param integer $row Row for the cell to convert (0-indexed).
 | 
        
           |  |  | 81 |     * @param integer $col Column for the cell to convert (0-indexed).
 | 
        
           |  |  | 82 |     * @return string The cell identifier in A1 format
 | 
        
           |  |  | 83 |     */
 | 
        
           |  |  | 84 |     function rowcolToCell($row, $col)
 | 
        
           |  |  | 85 |     {
 | 
        
           |  |  | 86 |         if ($col > 255) { //maximum column value exceeded
 | 
        
           |  |  | 87 |             return new PEAR_Error("Maximum column value exceeded: $col");
 | 
        
           |  |  | 88 |         }
 | 
        
           |  |  | 89 |   | 
        
           |  |  | 90 |         $int = (int)($col / 26);
 | 
        
           |  |  | 91 |         $frac = $col % 26;
 | 
        
           |  |  | 92 |         $chr1 = '';
 | 
        
           |  |  | 93 |   | 
        
           |  |  | 94 |         if ($int > 0) {
 | 
        
           |  |  | 95 |             $chr1 = chr(ord('A') + $int - 1);
 | 
        
           |  |  | 96 |         }
 | 
        
           |  |  | 97 |   | 
        
           |  |  | 98 |         $chr2 = chr(ord('A') + $frac);
 | 
        
           |  |  | 99 |         $row++;
 | 
        
           |  |  | 100 |   | 
        
           |  |  | 101 |         return $chr1 . $chr2 . $row;
 | 
        
           |  |  | 102 |     }
 | 
        
           | 418 | aurelien | 103 | }
 | 
        
           |  |  | 104 | ?>
 |