2012-09-04 15 views
0

我有一個程序,使文件一個excel文件,我有它,所以它擺脫愚蠢的格式mc excel但不會擺脫########我如何擺脫excel荒謬的自動格式在php中創建一個文件爲excel格式

這種格式發生在MC好像看起來如果一個單元格有符號 - 在它。但並非所有人都是這樣。

代碼的清理是:

function cleanData(&$str) 
    { 
    // escape tab characters 
    $str = preg_replace("/\t/", "\\t", $str); 

    // escape new lines 
    $str = preg_replace("/\r?\n/", "\\n", $str); 

    // convert 't' and 'f' to boolean values 
    if($str == 't') $str = 'TRUE'; 
    if($str == 'f') $str = 'FALSE'; 

    // force certain number/date formats to be imported as strings 
    if(preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) { 
     $str = "'$str"; 
    } 

    // escape fields that include double quotes 
    if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; 

    } 

讓我知道,如果你有什麼事!

謝謝。

+0

我認爲你可以用一個單引號(')開始一個單元格的內容,它將字面上的內容對待,而不會混淆它。 – HappyTimeGopher

+3

「########」是MS Excel在單元格的內容對於默認列大小過大時顯示的內容:它與符號無關。單元格中的值仍然正確,但在使用製表符分隔值文件時無法設置列寬,因此除非切換到真實的Excel文件 –

+3

PS,否則無法控制此值。如果您必須使用製表符分隔的值文件;而不是編寫自己的轉換爲製表符分隔值,爲什麼不使用PHP的內置fputcsv()函數呢? –

回答

1

「########」是MS Excel在單元格內容對於默認列大小過大時顯示的內容:它與文本中的符號無關。單元格中的值仍然正確,但在使用製表符分隔的值文件時無法設置列寬,因此除非切換到真正的Excel文件,否則無法控制此值。

如果您必須使用製表符分隔的值文件;而不是編寫自己的轉換爲製表符分隔值,爲什麼不使用PHP的內置fputcsv()函數呢?