Strona główna Klasa do generowania plików .xls (Microsoft Excel)
Wpis
Anuluj

Klasa do generowania plików .xls (Microsoft Excel)

Klasa do generowania plików .xls (Microsoft Excel)

Po wielu poszukiwaniach prostej klasy do generowania “Exceli” znalazłem takową, i okazało się, że się sprawdza (przynajmniej mi się sprawdziła).

Klasa generuje kod XLSa na podstawie mutitablicy.

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
class Excel
{
	 function xlsBOF() {
	    $data = pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);  
	    return $data;
	}
	
	function xlsEOF() {
	    $data = pack("ss", 0x0A, 0x00);
	    return $data;
	}
	
	function xlsWriteNumber($Row, $Col, $Value) {
	    $data = pack("sssss", 0x203, 14, $Row, $Col, 0x0);
	    $data .= pack("d", $Value);
	    return $data;
	}
	
	function xlsWriteLabel($Row, $Col, $Value ) {
	    $L = strlen($Value);
	    $data = pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
	    $data .= $Value;
		return $data;
	}
	
	function generateXLS($array)
	{
		$data = $this->xlsBOF();
		$amount = count($array);
		for($i=0;$i<$amount;$i++)
		{
			$row = $array[$i];
			$amount_row = count($row);
			for($j=0;$j<$amount_row;$j++)
			{
				if((int)$row[$j])
				{
					$data .= $this->xlsWriteNumber($i,$j,$row[$j]);
				}
				else
				{
					$data .= $this->xlsWriteLabel($i,$j,$row[$j]);
				}
			}
		}
		$data .= $this->xlsEOF();
		    header("Pragma: public");
		    header("Expires: 0");
		    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
		    header("Content-Type: application/force-download");
		    header("Content-Type: application/octet-stream");
		    header("Content-Type: application/download");
		    header("Content-Disposition: attachment;filename=$filename.xls ");
		    header("Content-Transfer-Encoding: binary ");
		    echo $data;;
        }
}
Ten post jest udostępniony na licencji CC BY 4.0 przez autora.

Zdublowane wpisy

Polecane aplikacje - część 1