转载

使用phpexcel解析Excel

使用composer管理

composer require phpoffice/phpexcel
<?php  error_reporting(E_ALL); date_default_timezone_set('Asia/Shanghai');  require __dir__ . '/../vendor/autoload.php';  // ... 注意自己赋值$file $excel = PHPExcel_IOFactory::load($file); $sheetCount = $excel->getSheetCount(); echo "sheet count:$sheetCount" . PHP_EOL; foreach ($excel->getWorksheetIterator() as $sheet) {     if ($sheet->getSheetState() === 'hidden') {         continue;     }     $sheetName = $sheet->getTitle();     echo "sheet name: $sheetName" . PHP_EOL;     $highestColumn = $sheet->getHighestColumn();     $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);     $highestRow = $sheet->getHighestRow();     for ($row = 1; $row <= $highestRow; $row++) {         $columns = [];         for($col = 0; $col < $highestColumnIndex; $col++) {             $cell = $sheet->getCellByColumnAndRow($col, $row);             $val = $cell->getValue();             if ($val instanceof PHPExcel_RichText) {                 $columns[] = trim($val->getPlainText());             } else {                 $columns[] = trim($val);             }         }         var_dump($columns);     } }

过滤隐藏的worksheet

if ($sheet->getSheetState() === 'hidden')

过滤隐藏的行

由Excel中auto filter隐藏的行

if ($sheet->getRowDimension($row)->getVisible())

获取单元格颜色

获取文字颜色

$cell->getStyle()->getFont()->getColor()->getRGB();

获取填充颜色

$cell->getStyle()->getFill()->getStartColor()->getRGB();

颜色的差异值

是这样,运营那边对不同类型的数据进行了颜色的分类,但是是多个人整理的,所以 紫色淡紫色 的运营那边认为是同一个东西;但是程序里面是没法判断,因为紫色的区域太大了;所以这边就需要用到颜色的差异值比对了。

| YUV |      -      |   -   | |-----|-------------|-------| |  Y  |     Luma    | 明亮度 | |  U  | Chrominance |  色度  | |  V  |    Chroma   |  浓度  | 

Y'UV 的发明是由于彩色电视与黑白电视的过渡时期。黑白视讯只有 Y(Luma,Luminance)视讯,也就是灰阶值。到了彩色电视规格的制定,是以 YUV/YIQ 的格式来处理彩色电视图像,把 UV 视作表示彩度的 C(Chrominance或Chroma),如果忽略 C 讯号,那么剩下的 Y(Luma)讯号就跟之前的黑白电视讯号相同,这样一来便解决彩色电视机与黑白电视机的相容问题。

|  Lab  |  -   |   -   | |-------|------|-------| |   L   | Luma | 明亮度 | |   a   |   a  |   -   | |   b   |   b  |   -   | 

RGB -> XYZ -> Lab -> delta E

RGB to closest predefined color

color distance

RGB到Lab的转换
| RGB |   -   |  -  | |-----|-------|-----| |  R  |  Red  | 红色 | |  G  | Green | 绿色 | |  B  | Blue  | 蓝色 | 

php默认函数 imagecolorclosest // RGB几何距离,由于RGB空间不是颜色感知连续的,所以效果没有Lab'的好

这边有个实现好的颜色空间转换的代码 hasbridge/php-color

原文  http://type.so/php/phpexcel-usage.html
正文到此结束
Loading...