String 按列和行获取PHPExcel中的单元格作为字符串

String 按列和行获取PHPExcel中的单元格作为字符串,string,phpexcel,String,Phpexcel,我试图将可能有尾随零的单元格作为字符串而不是数字(去掉前导零)读取。单元格按整数列/行读取,如下所示,而不是按列字符串读取 初始代码 $instReader = $reader->load($this->file); $sheet = $instReader->getSheet(0); 我尝试从以下位置修改此内容: $keyCell = $sheet->getCellByColumnAndRow(1,5); 致: 前者以1407美元兑换keyCell,

我试图将可能有尾随零的单元格作为字符串而不是数字(去掉前导零)读取。单元格按整数列/行读取,如下所示,而不是按列字符串读取

初始代码

    $instReader = $reader->load($this->file);
    $sheet = $instReader->getSheet(0);
我尝试从以下位置修改此内容:

$keyCell = $sheet->getCellByColumnAndRow(1,5);
致:

前者以1407美元兑换keyCell,而不是01407美元

后者给出“s”或“”

在调用GetCellByColumnRow并对列和行仅使用整数值之前,如何将单元格视为字符串

(顺便说一句,如果可以对整个列执行一次,而不是对每个单独的单元格执行一次,那会更好)

将以Excel实际存储的格式读取单元格数据,您不能随意更改该格式,也不能让PHPExcel将其作为不同的数据类型读取

但是,如果单元格已应用格式,则可以使用

$keyCell = $sheet->getCellByColumnAndRow(1,5)->getFormattedValue();

相反,这将以字符串形式返回数据,无论Excel电子表格中定义了什么格式掩码,这对我来说都是一样的问题。我变得疯狂。 试图设置

 $objReader->setReadDataOnly(true);
没用

尝试

因为将文本正常显示为原始=>不起作用

最后我在库中更改了代码。编辑名为
DefaultValueBinder.php的文件
搜索
dataTypeForValue
函数并设置:

    } elseif (is_float($pValue) || is_int($pValue)) {
        return PHPExcel_Cell_DataType::TYPE_STRING;//TYPE_NUMERIC patch here;

    } elseif (preg_match('/^\-?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)$/', $pValue)) {
        return PHPExcel_Cell_DataType::TYPE_STRING;//TYPE_NUMERIC patch here;

现在返回带0的数字

谢谢标记。但是不起作用。它仍然返回1407,而不是microsoft excel中显示的01407。加载文件时是否设置了readDataOnly?如果是这样,则不会加载样式信息(如格式掩码),只有原始数据会发现问题$xlsReader->setReadDataOnly(true);正在删除格式化。执行此操作后,另一个300k excel文件出现内存错误。消耗的内存超过500mb。是否有其他解决方案?如果您使用PHPExcel达到内存限制,请尝试使用文档中描述的“单元缓存”
 $objReader->setReadDataOnly(true);
 $sheet->getCellByColumnAndRow(4,$row)->getValue()
    } elseif (is_float($pValue) || is_int($pValue)) {
        return PHPExcel_Cell_DataType::TYPE_STRING;//TYPE_NUMERIC patch here;

    } elseif (preg_match('/^\-?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)$/', $pValue)) {
        return PHPExcel_Cell_DataType::TYPE_STRING;//TYPE_NUMERIC patch here;