This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | /** |
||
3 | * @package fwolflib |
||
4 | * @subpackage class |
||
5 | * @copyright Copyright 2003-2009, Fwolf |
||
6 | * @author Fwolf <[email protected]> |
||
7 | * @since 2009-12-22 |
||
8 | */ |
||
9 | |||
10 | |||
11 | require_once(dirname(__FILE__) . '/fwolflib.php'); |
||
12 | |||
13 | |||
14 | /** |
||
15 | * @package fwolflib |
||
16 | * @subpackage class |
||
17 | * @copyright Copyright 2003-2009, Fwolf |
||
18 | * @author Fwolf <[email protected]> |
||
19 | * @since 2009-12-22 |
||
20 | * @link http://www.phplamp.org/2008/06/php-to-excel-clas/ |
||
21 | */ |
||
22 | class Excel extends Fwolflib { |
||
23 | |||
24 | /** |
||
25 | * Array of row in xml |
||
26 | * @var array |
||
27 | */ |
||
28 | protected $aRow = array(); |
||
29 | |||
30 | /** |
||
31 | * Footer of excel xml |
||
32 | * @var string |
||
33 | */ |
||
34 | protected $sFooter = "</Workbook>"; |
||
35 | |||
36 | /** |
||
37 | * Header of excel xml |
||
38 | * @var string |
||
39 | */ |
||
40 | protected $sHeader = '<?xml version="1.0" encoding="utf-8"?> |
||
41 | <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" |
||
42 | xmlns:x="urn:schemas-microsoft-com:office:excel" |
||
43 | xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" |
||
44 | xmlns:html="http://www.w3.org/TR/REC-html40"> |
||
45 | '; |
||
46 | |||
47 | /** |
||
48 | * Title of sheet |
||
49 | * @var string |
||
50 | */ |
||
51 | public $sSheetTitle = 'Sheet1'; |
||
52 | |||
53 | |||
54 | /** |
||
55 | * Set a single row(add mode) |
||
56 | * |
||
57 | * @param array $ar 1-dimensional array |
||
58 | */ |
||
59 | protected function SetRow($ar) { |
||
60 | $s_cell = ''; |
||
61 | |||
62 | if (!empty($ar)) { |
||
63 | foreach ($ar as $v) { |
||
64 | // Attention: data type |
||
65 | if(is_numeric($v)) { |
||
66 | $v = strval($v); |
||
67 | // First letter is '0' ? |
||
68 | if(0 == $v{0}) { |
||
69 | $s_cells.= '<Cell><Data ss:Type="string">' . $v . '</Data></Cell> |
||
70 | '; |
||
71 | } else { |
||
72 | $s_cell .= '<Cell><Data ss:Type="number">' . $v . '</Data></Cell> |
||
73 | '; |
||
74 | } |
||
75 | } else { |
||
76 | $s_cell .= '<Cell><Data ss:Type="string">' . $v . '</Data></Cell> |
||
77 | '; |
||
78 | } |
||
79 | } |
||
80 | $this->aRow[] = "<Row>\n$s_cell</Row>\n"; |
||
81 | } |
||
82 | } // end of func SetRow |
||
83 | |||
84 | |||
85 | /** |
||
86 | * Set data rows, multi row, clean mode |
||
87 | * |
||
88 | * @param array $ar 2-dimensional array |
||
89 | */ |
||
90 | public function SetRows ($ar) { |
||
91 | if (!empty($ar)) |
||
92 | foreach ($ar as $v) |
||
93 | $this->SetRow($v); |
||
94 | } // end of func SetRows |
||
95 | |||
96 | |||
97 | /** |
||
98 | * Set the worksheet title |
||
99 | * |
||
100 | * Checks the string for not allowed characters (:\/?*), |
||
101 | * cuts it to maximum 31 characters and set the title. Damn |
||
102 | * why are not-allowed chars nowhere to be found? Windows |
||
103 | * help's no help... |
||
104 | * |
||
105 | * @param string $title |
||
106 | */ |
||
107 | public function SetSheetTitle($title) { |
||
108 | // Strip special chars |
||
109 | $title = str_replace ( |
||
110 | array(':', '\\', '/', '?', '*'), |
||
111 | '', $title); |
||
112 | |||
113 | // Cut it to the allowed length |
||
114 | $title = substr($title, 0, 31); |
||
115 | |||
116 | $this->sSheetTitle = $title; |
||
117 | } // end of func SetSheetTitle |
||
118 | |||
119 | |||
120 | /** |
||
121 | * Output the excel file |
||
122 | * |
||
123 | * @param string $fn Filename without '.xls' |
||
124 | */ |
||
125 | public function Output($fn) { |
||
126 | // Set header |
||
127 | header('Content-Type: application/vnd.ms-excel; charset=utf-8'); |
||
128 | header('Content-Disposition: inline; filename="' |
||
129 | . $fn . '.xls"'); |
||
130 | |||
131 | |||
132 | echo ($this->sHeader); |
||
133 | echo '<Worksheet ss:Name="' |
||
134 | . $this->sSheetTitle |
||
135 | . '"> |
||
136 | <Table> |
||
137 | '; |
||
138 | echo '<Column ss:Index="1" ss:AutoFitWidth="0" ss:Width="110"/> |
||
139 | '; |
||
140 | echo implode("\n", $this->aRow); |
||
141 | echo '</Table> |
||
142 | </Worksheet> |
||
143 | '; |
||
144 | echo $this->sFooter; |
||
145 | } |
||
146 | |||
147 | } // end of class Excel |
||
148 | |||
149 | /* |
||
150 | // Usage |
||
151 | // Need high version of microsoft office |
||
152 | |||
153 | $ar = array ( |
||
154 | array ('列1', '列2', '列3列3列3', '123456'), |
||
155 | ); |
||
156 | $xls = new Excel; |
||
157 | $xls->SetRows($ar); |
||
158 | $xls->Output('test'); |
||
159 | */ |
||
160 | |||
161 | ?> |
||
0 ignored issues
–
show
|
|||
162 |
Using a closing tag in PHP files that only contain PHP code is not recommended as you might accidentally add whitespace after the closing tag which would then be output by PHP. This can cause severe problems, for example headers cannot be sent anymore.
A simple precaution is to leave off the closing tag as it is not required, and it also has no negative effects whatsoever.