Home » excel » PHP CSV excel not show 0 before numbers

PHP CSV excel not show 0 before numbers

Posted by: admin May 14, 2020 Leave a comment

Questions:

I’m writing data from db to excel, and have one problem, if number have first symbol “0” excel not show. for example numer 0777 excel show 777, there is programming problem or excel ?

How to&Answers:

Here comes a basic example how to set the number style with PHPExcel. In Excel the values will be threatened as numbers 777 but will be formatted with a leading zero 0770 .

// create a new document
$xls = new PHPExcel();

// get the first worksheet
$sheet = $xls->getSheet(0);

// write example values and set number styles of the cells
// 0000 means that values lower than 1000 will be prepended by a 0
$sheet->getCell('A1')->setValue('0777');
$sheet->getStyle('A1')->getNumberFormat()
   ->setFormatCode('0000');

$sheet->getCell('A2')->setValue('0440');
$sheet->getStyle('A2')->getNumberFormat()
   ->setFormatCode('0000');

// write file in Excel2007 format
$writer = new PHPExcel_Writer_Excel2007($xls);
$writer->save('test.xlsx');

Answer:

my code on export clean data having some rules for strings

ob_end_clean();
  function cleanData(&$str) { 
     if($str == 't') 
       $str = 'TRUE'; 
     if($str == 'f') 
       $str = 'FALSE'; 
     if(preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) { 
       $str = "'$str"; 
     } 
     if(strstr($str, '"')) 
     $str = '"' . str_replace('"', '""', $str) . '"'; 
  } 
  // filename for download 
  $filename = date("Y-m-d").".csv";
  header('Content-Type: text/csv');
  header("Content-Disposition: attachment; filename=\"$filename\""); 
  $out = fopen("php://output", 'w'); 
  $flag = false;
   //$result = $orderDetails; 
   foreach($details as $row) {
     if(!$flag) { 
       // display field/column names as first row 
       fputcsv($out, array_keys($row), ',', '"');
       $flag = true; 
     } 
     array_walk($row, 'cleanData');
     fputcsv($out, array_values($row), ',', '"'); 
   } 
    fclose($out); 
    exit();