Subversion Repositories Applications.bazar

Rev

Rev 468 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
468 mathias 1
<?php
2
/*
3
*  Module written/ported by Xavier Noguer <xnoguer@rezebra.com>
4
*
5
*  PERL Spreadsheet::WriteExcel module.
6
*
7
*  The author of the Spreadsheet::WriteExcel module is John McNamara
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
 
34
require_once 'PEAR.php';
35
require_once 'Spreadsheet/Excel/Writer/Workbook.php';
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");
68
        header("Content-Disposition: attachment; filename=\"$filename\"");
69
        header("Expires: 0");
70
        header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
71
        header("Pragma: public");
72
    }
73
 
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
    }
103
}
104
?>