Adsense

Easy way to create XLS charset utf-8 file from PHP


  Everybody knows phpMyAdmin can export file to Excel format but phpMyAdmin just export .csv file,not real Excel file format. If you are interest in PHP programming and need to export to the real Excel format please check it out !

Example PHP export to XLS file format.

1. Create Function for XLS

function xlsBOF() {
    echo
pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0); 
    return;
}

function
xlsEOF() {
    echo
pack("ss", 0x0A, 0x00);
    return;
}

function
xlsWriteNumber($Row, $Col, $Value) {
    echo
pack("sssss", 0x203, 14, $Row, $Col, 0x0);
    echo
pack("d", $Value);
    return;
}

function
xlsWriteLabel($Row, $Col, $Value ) {
    
$L = strlen($Value);
    echo
pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
    echo
$Value;
return;
}



2. Send Header to Browser in download format.

   // Query Database
    
$result=mysql_db_query($dbname,"select id,prename,name,sname,grade from appdata where course='$courseid' and sec='$section'")

    
// Send Header
    
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=$courseid-$sec.xls "); // แล้วนี่ก็ชื่อไฟล์
    
header("Content-Transfer-Encoding: binary ");

    
// XLS Data Cell

                
xlsBOF();
                
xlsWriteLabel(1,0,"Student Register $semester/$year");
                
xlsWriteLabel(2,0,"COURSENO : ");
                
xlsWriteLabel(2,1,"$courseid");
                
xlsWriteLabel(3,0,"TITLE : ");
                
xlsWriteLabel(3,1,"$title");
                
xlsWriteLabel(4,0,"SETION : ");
                
xlsWriteLabel(4,1,"$sec");
                
xlsWriteLabel(6,0,"NO");
                
xlsWriteLabel(6,1,"ID");
                
xlsWriteLabel(6,2,"Gender");
                
xlsWriteLabel(6,3,"Name");
                
xlsWriteLabel(6,4,"Lastname");
                
$xlsRow = 7;
                while(list(
$id,$prename,$name,$sname,$grade)=mysql_fetch_row($result)) {
                    ++
$i;
                          
xlsWriteNumber($xlsRow,0,"$i");
                          
xlsWriteNumber($xlsRow,1,"$id");
                          
xlsWriteLabel($xlsRow,2,"$prename");
                          
xlsWriteLabel($xlsRow,3,"$name");
                          
xlsWriteLabel($xlsRow,4,"$sname");
                    
$xlsRow++;
                    }
                    
xlsEOF();
                 exit();

3 comments:

  1. i have more text in a field through generate excel from db and open excel sheet error will be show "data may have been lost"

    ReplyDelete
  2. Use like this xlsWriteLabel($xlsRow,2,"mb_strimwidth($row['val'], 0, 255, "...")");

    ReplyDelete
  3. a person every so often thinking about visits your weblog regularly and advocated it in my experience to go browsing as ably. The addiction of writing is great and in addition to the content is extremity-notch. thank you for that acuteness you find the component for the readers! xls converter online

    ReplyDelete

comment here

newest questions on wordpress