24
Mär/10
0

XLS Klasse generiert Excel Dateien

(iframe AG, S-Node)

Auch wenn sie jetzt vielleicht einige Fragen, ob hier jemand wirklich richtige Excel Dateien schreibt, muss ich Sie enttäuschen. Hier handelt es sich um eine Klasse, die anstelle von csv (comma seperated values) ein tsv (tab seperated values) generiert.

Das Encoding der Werte wird in LATIN1 zurückgegeben.

Doch wesshalb das ganze? Des öfteren musste man normale csv im Excel importieren, was öfters zu unerwarteten Ergebnissen geführt hat.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
<?php
 
/**
* xls.class.php
*
* Distributed under the GNU Lesser General Public License (LGPL v3)
* (http://www.gnu.org/licenses/lgpl.html)
* This program is distributed in the hope that it will be useful -
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* Author: iframe AG, Dominik Zogg
*
*/
 
class xls {
 
/* private string filename */
var $_filename = "";
 
/* private array data */
var $_data = array();
 
/* private string renderedContent */
var $_renderedContent = "";
 
/* __construct */
function xls($filename) {
$this->_filename = substr($filename, 0 ,
strpos($filename, "."));
}
 
/* public function addData() */
function addData($data) {
if(is_array($data)) {
$this->_data = $data;
$this->renderContent();
}
}
 
/* private function renderContent() */
function renderContent() {
$this->_renderedContent = "";
$badsigns = array("\t", "\r", "\n");
$goodsigns = array(" ", "", "");
foreach($this->_data as $row) {
$rowstring = "";
foreach($row as $field) {
$rowstring .=
str_replace($badsigns,
$goodsigns,
utf8_decode(stripslashes($field))) .
"\t";
}
$this->_renderedContent .=
substr($rowstring, 0, -1) . "\r\n";
}
}
 
/* public function sendData() */
function sendData() {
header("Content-type: application/vnd.ms-excel");
header('Content-Disposition: attachment;
filename="' .
$this->_filename . '_' . date("d-m-Y") . '.xls"');
echo $this->_renderedContent;
}
 
}
view raw xls.class.php This Gist brought to you by GitHub.

Zurück

Einen Kommentar schreiben