php生成excel

生成excel有很多方法 这里记录一个相对最简单 在php 5.3.8里能使用的

 

 1 function xlsBOF() {
2 echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
3 return;
4 }
5 function xlsEOF() {
6 echo pack("ss", 0x0A, 0x00);
7 return;
8 }
9 function format( $STR ){
10 $STR = str_replace( "\"", "", $STR );
11 if ( strpos( $STR, "," ) ){
12 $STR = "\"".$STR."\"";
13 }
14 $STR = iconv( "utf-8", "gb2312", $STR );
15 return $STR;
16 }
17 function xlsWriteNumber($Row, $Col, $Value) {
18 echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
19 echo pack("d", $Value);
20 return;
21 }
22 function xlsWriteLabel($Row, $Col, $Value ) {
23 $L = strlen($Value);
24 echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
25 echo $Value;
26 return;
27 }
28 function write_excel_line($hang,$lie,$val){
29 if(is_numeric($val)){
30 xlsWriteNumber($hang,$lie,$val);
31 }else{
32 xlsWriteLabel($hang,$lie,$val);
33 }
34 }
35 $mktime = mktime();
36 header('Content-Type: text/html; charset=utf-8');
37 header("Pragma: public");
38 header("Expires: 0");
39 header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
40 header("Content-Type: application/force-download");
41 header("Content-Type: application/octet-stream");
42 header("Content-Type: application/download");
43 header("Content-Disposition: attachment;filename=$mktime.xls ");
44 header("Content-Transfer-Encoding: binary ");
45 // XLS Data Cell
46 xlsBOF();
47 xlsWriteLabel(0, 0, format('单元格A1'));
48 xlsWriteLabel(0, 1, format('单元格B1'));
49 xlsWriteLabel(0, 2, format('单元格C1'));
50 write_excel_line(1, 0, 'A2');
51 write_excel_line(1, 1, 'B2');
52 write_excel_line(1, 2, 'C2');
53 write_excel_line(2, 0, 'A3');
54 write_excel_line(2, 1, 'B3');
55 write_excel_line(2, 2, 'C3');
56 write_excel_line(3 , 0, '40');
57 write_excel_line(3 , 1, '41');
58 write_excel_line(3 , 2, '42');
59 xlsEOF();



posted on 2011-12-05 16:03  雨弓  阅读(212)  评论(0编辑  收藏  举报