phpExcel是一个专门操作数据表格的类,他可以导入、导出excel表格中的数据,简单、漂亮,非常适合导入、导出、分析数据来使用。
以下代码主要为了实现从阿里OSS上获取数据表格,并分析表格数据导入数据库,唯一不同的是这个表格是不规则,分析数据的话相对来数复杂了一些,废话不多少,下面直接介绍如何处理这种复杂的表格:
第一步:分析表格
经过处理,把这个底色为白色的表格处理成正常的形式
经过处理可以发现,这个表格的数据是有规律的。
坐标B6是账号,C6是房号,D6是房类,一次类推,每行不同的数据都是由不同字母和数字的组合。
特殊的一点就是房价在行数据的下一行,通过观察可以发现,每行的真实数据的列坐标是偶数,相对应的房价都是在奇数上,这样一分析就可以找到方法分析数据了。
第二步:实现代码
实现代码1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| <?php include_once('../excel/Classes/PHPExcel/IOFactory.php'); file_put_contents('abc.xls',file_get_contents('https://www.baidu.com/20190226/caf55125b3f510b9242235bfa7f06212.xls'));
$filePath = 'abc.xls'; $fileType = PHPExcel_IOFactory::identify($filePath); $fileRead = PHPExcel_IOFactory::createReader($fileType); $excelObj = $fileRead->load($filePath); $sheet = $excelObj->getActiveSheet(); $highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn();
$dataSet = array();
for($row = 6;$row<=$highestRow-4;$row++){ $dataSet[$row] = array(); for($column="B";$column<=$highestColumn;$column++){ if($column=='F' && $row%2==1){ $dataSet[$row-1][$column] = $sheet->getCell($column.$row)->getValue();
}else{ if($column =='L' || $column == 'N'){ $time = $sheet->getCell($column.$row)->getValue(); $dataSet[$row][$column] = date('Y-m-d H:i:s',PHPExcel_Shared_Date::ExcelToPHP($time)); }else{ $dataSet[$row][$column] = $sheet->getCell($column.$row)->getValue(); } } } if($row%2==1){ unset($dataSet[$row]); }else{ $dataSet[$row] = array_filter($dataSet[$row]); } }
echo "<pre>"; print_r($dataSet);
|
第三步:查看结果
打印数据1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| Array ( [6] => Array ( [B] => 233756 [C] => 1AC65 [D] => DDYG [G] => 戴 [L] => 2019-02-04 12:42:00 [N] => 2019-03-06 12:00:00 [F] => 400 )
[8] => Array ( [B] => 233758 [C] => 1BC65 [D] => DDYG [G] => 戴 [H] => 48+456+844654654 [L] => 2019-02-04 12:44:00 [N] => 2019-03-06 12:00:00 [F] => 400 )
[10] => Array ( [B] => 241572 [C] => E55b [D] => DDYG [G] => 戴 [L] => 2019-02-16 09:40:00 [N] => 2019-03-30 12:00:00 [F] => 0 )
[12] => Array ( [B] => 246484 [C] => 2AC52 [D] => YGTYF [G] => 戴 [H] => 476+5456456156415641 [I] => 博客 [L] => 2019-02-25 17:23:00 [N] => 2019-02-27 12:00:00 [F] => 362 )
[14] => Array ( [B] => 246485 [C] => 2BC52 [D] => YGTYF [G] => 戴 [H] => 415645156 [I] => 博客 [L] => 2019-02-25 17:24:00 [N] => 2019-02-27 12:00:00 [F] => 362 )
[16] => Array ( [B] => 246486 [C] => D86a [D] => DDYG [G] => 戴 [H] => 156+1112 [L] => 2019-02-25 17:25:00 [N] => 2019-02-28 12:00:00 [P] => 业主自主 [F] => 0 )
)
|
很完美,如有其它需要可根据代码调整。