将php数据导出为ex​​cel的文本数据类型

时间:2012-09-24 20:57:34

标签: php phpexcel

我想将我的php网页导出为ex​​cel。

为此,我发现以下代码有效但有问题。

列中的值以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行的表格数据。

3 个答案:

答案 0 :(得分: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中向我推荐的一个提示。

答案 1 :(得分:2)

如果您的单元格数据类型不是0,则text只是隐藏,选择Excel中的所有单元格,并将数据类型设置为text

或者尝试为php中的每个值添加单引号'00003421''\'00003421',如果数字以单引号开头,则excel会知道这是text数据类型。< / p>

答案 2 :(得分:0)

我通过以下方式解决了这个问题。

你可以试试这个

git blame