3

我想将我的 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 行的表格数据。

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

这是 markbaker 在这个问题中向我推荐的提示。

于 2012-09-27T08:55:24.943 回答
2

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

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

于 2012-09-27T08:54:20.507 回答
1

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

你可以试试这个

<?php
$number='00003421';
echo "<td>=\"$number\"</td>";
?>
于 2017-12-01T15:01:37.473 回答