3

PHP Web ページを 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 行の表形式のデータです。

4

3 に答える 3

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); 
    } 
} 

これは、マークベーカーがこの質問で私に勧めたヒントでした。

于 2012-09-27T08:55:24.943 に答える
2

セルの0データ型が でない場合は非表示textになり、Excel ですべてのセルを選択し、データ型を に設定しますtext

または、php のすべての値に一重引用符を追加してみてください'00003421'。数値が一重引用符で始まる場合'\'00003421'、Excel はこれがデータ型であることを認識します。text

于 2012-09-27T08:54:20.507 に答える