2012-09-24 67 views
3

我想將我的php網頁導出爲ex​​cel。將php數據導出爲文本數據類型的excel

爲此,我找到了以下代碼,但它有問題。

在列中的值以php中的'00003421'開頭,但在Excel中導出時,它在單元格中只顯示'3421'。它忽略零值。此外,我希望他們在文本數據類型。

如何以純文本格式導出數據(包括零)?

header("Content-type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=export.xls"); 
header("Content-Transfer-Encoding: BINARY"); 

它是具有4列和大約20,000行的表格數據。

+0

啊,AUTOMAGIC擴展解決方案...所以是你真正echoi ng輸出這些頭文件?讓我猜猜,無論是CSV還是HTML –

+0

Im導出一個像4列20000行的數據表 – user1449596

+0

將引號括起來將它們變成一個字符串? – David

回答

8

一個可能的解決方案是創建一個新值Binder方法來覆蓋PHPExcel方法。 (PHPExcel試圖猜測我們在細胞中插入數據類型因此,以下markBaker的建議,我創造了這個類重寫這個方法:

class PHPExcel_Cell_MyValueBinder extends PHPExcel_Cell_DefaultValueBinder 
implements PHPExcel_Cell_IValueBinder 
{ 
    public function bindValue(PHPExcel_Cell $cell, $value = null) { 
     // sanitize UTF-8 strings 
     if (is_string($value)) { 
      $value = PHPExcel_Shared_String::SanitizeUTF8($value); 
     } 

     // if it is a string and starts with 0, the value will be converted into string 
     if (is_string($value) && $value[0] == '0') { 
      $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING); 
      return true; 
     } 
     return parent::bindValue($cell, $value); 
    } 
} 

這是markbaker向我推薦這個question小費。

2

0只是隱藏,如果您的單元格的數據類型不是text,請選擇excel中的所有單元格,並將數據類型設置爲text

或者嘗試在php,'00003421''\'00003421'的每個值中添加一個單引號,如果數字以單引號開頭,excel將知道這是text數據類型。

+0

php中的值來自sql服務器存儲過程,並在php中使用mssql_fetch_array執行 您的第一個選項不起作用如果我選擇列並轉換在Excel中的文本,但它不會添加隱藏的零。 – user1449596

0

我已經通過以下方式解決了這個。

你可以試試這個

<?php 
$number='00003421'; 
echo "<td>=\"$number\"</td>"; 
?> 
相關問題