在使用PHPExcel导入数据时,有些列会获取到的是对象,如下面的数据: object(PHPExcel_RichText)#36154 (1) { ["_richTextElements":"PHPExcel_RichText":private] => array(1) { [0] => object(PHPExcel_RichText_Run)#133 (2) { ["_font":"PHPExcel_RichText_Run":private] => object(PHPExcel_Style_Font)#134 (11) { ["_name":protected] => string(12) "微软雅黑" ["_size":protected] => string(1) "8" ["_bold":protected] => bool(false) ["_italic":protected] => bool(false) ["_superScript":protected] => bool(false) ["_subScript":protected] => bool(false) ["_underline":protected] => string(4) "none" ["_strikethrough":protected] => bool(false) ["_color":protected] => object(PHPExcel_Style_Color)#135 (4) { ["_argb":protected] => string(8) "FF000000" ["_parentPropertyName":protected] => NULL ["_isSupervisor":protected] => bool(false) ["_parent":protected] => NULL } ["_isSupervisor":protected] => bool(false) ["_parent":protected] => NULL } ["_text":"PHPExcel_RichText_TextElement":private] => string(6) "伤寒" } } }
解决办法也很简单:需要判断一下获取的值是什么类型,然后再根据判断来做相应的获取操作
上代码:
Vendor('phpexcel.PHPExcel');
$objPHPExcel = PHPExcel_IOFactory::load($filename);
// 获取表格中的数据
$sheet = $objPHPExcel->getSheet(0); // 获取第一个工作表
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
// 循环读取每个单元格的内容。行数是以第1行为起始
for ($row = 2; $row <= $highestRow; $row++) {
$code = $sheet->getCell("A".$row)->getValue();
if(is_object($code)) {
$code_val = $code->__toString();
}else{
$code_val= $code;
}
echo code_val;
}