2012-10-22 39 views
1

我在Web上發現了此代碼,用於將表從Mysql導出到Excel。問題是導出到excel的數據缺少前導零。所以,而不是號碼090888我得到90888.除了代碼工作正常,所以我想改變這個特定的代碼。導出到Excel正在丟棄前導零

如果有人可以幫助我,我會很感激。

代碼:

header("Content-Type: application/xls"); 
header("Content-Disposition: attachment; filename=$filename.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

/*******Start of Formatting for Excel*******/ 

//define separator (defines columns in excel & tabs in word) 

$sep = "\t"; //tabbed character 

//start of printing column names as names of MySQL fields 

for ($i = 0; $i < mysql_num_fields($result); $i++) { 

echo mysql_field_name($result,$i) . "\t"; 

} 

print("\n"); 

//end of printing column names 

//start while loop to get data 

    while($row = mysql_fetch_row($result)) 
    { 
     $schema_insert = ""; 

     for($j=0; $j<mysql_num_fields($result);$j++) 

     { 

      if(!isset($row[$j])) 

       $schema_insert .= "NULL".$sep; 

      elseif ($row[$j] != "") 

       $schema_insert .= "$row[$j]".$sep; 

      else 

       $schema_insert .= "".$sep; 

     } 

     $schema_insert = str_replace($sep."$", "", $schema_insert); 

$schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); 

     $schema_insert .= "\t"; 

     print(trim($schema_insert)); 

     print "\n"; 
    } 
?> 
+1

是否表格已經存在?如果是這樣,請確保將列的格式設置爲文本,以便刪除零的列。目前它們是數字列(所以前面的0是多餘的) – mcalex

回答

0

當你打印到excel表,由一個單引號之前的數字。 這將強制他們被視爲文字,而不是數字數據。

例如,打印'090888而不是僅僅090888,這將迫使它把它作爲一個字符串(但不會顯示在Excel中'

另一種方法是調整格式,但我不在上面的例子中,我們認爲這是不可能的

+0

調整格式簡單地不可能使用製表符分隔值文件 –

+0

...以及我如何使用當前代碼執行此操作? – user1758545

+0

如果'$ row [$ j]'包含您的數字,前面加上0,'$ schema_insert。=''$ row [$ j]「。$ sep;'。請注意數字本身之前的單引號。 –

0

創建XLS時不能加整數'0',因爲只有在你創建的Excel中列的格式是整數,所以我們需要改變列的格式,爲此你可以使用這個包PHPEXCEL創建Excel。

,你也可以參考這個帖子:

https://stackoverflow.com/a/3269351/1638375

0

使用PHPEXCEL後,使用這樣的:

$objPHPExcel->getActiveSheet() 
    ->setCellValueExplicit("$row[$j]", "value" ,PHPExcel_Cell_DataType::TYPE_STRING);