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;