【问题标题】:Reading phone number with leading zero by phpexcel通过phpexcel读取前导零的电话号码
【发布时间】:2013-03-06 07:48:11
【问题描述】:

我想用 Phpexcel 读取一个 excel 文件并将数据插入数据库,我可以读取所有内容并且工作正常,但我无法读取 Phpexcel 前导零的电话号码 当我看到我的数据库中保存的所有电话号码没有前导零时,如下所示:0212365498 保存为 212365498

【问题讨论】:

  • 您是否尝试将它们作为字符串而不是整数来读取?
  • 我认为您不能在 DB 中存储以零开头的数字(假设您的 DB 字段是 INT)。尝试将字段类型从 INT 更改为 VARCHAR。这可能会有所帮助:stackoverflow.com/questions/2786193/…
  • 我试图读取为字符串,但它不起作用
  • 正如我所提到的,问题出在您的数据库方面
  • 感谢 Makesh 它对我有用

标签: php phpexcel


【解决方案1】:

如果您从 CSV 文件导入,您可以使用值绑定器来保留任何前导零。这就是我实施修复的方式。

创建了一个名为 'BindValueAsString' 的类

class BindValueAsString extends PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder
{
    public function bindValue(PHPExcel_Cell $cell, $value = null)
    {
        $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING);
        return true;
    }
} 

在加载 CSV 文件之前设置值绑定

$objReader    = PHPExcel_IOFactory::createReader('CSV');
PHPExcel_Cell::setValueBinder(new BindValueAsString());
$objPHPExcel  = $objReader->load('file.csv');
$worksheet    = $objPHPExcel->getActiveSheet();
$dataAsString = $worksheet->toArray();

就是这样。或者你可以升级到 1.8.1 版本,其中前导零是固定的here

【讨论】:

    猜你喜欢
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 2014-09-05
    • 2018-11-01
    • 1970-01-01
    • 2019-05-02
    相关资源
    最近更新 更多