|
<?php
namespace app\index\model;
require_once(VENDOR . '\phpoffice\PHPExcel\IOFactory.php');
class Sales
{
private $excel;
public $salesData;
public function __construct()
{
$this->excel = \PHPExcel_IOFactory::load(EcexlPath);
$this->getSalesData();
}
/**
* 获取所有工作表名
*/
private function getSheetNames()
{
$this->sheet_namas = $this->excel->getSheetNames();
}
/**
* 获取第一个 sheet 的所有数据
*/
private function getFirstSheets()
{
// // 获取所有工作表名
// $this->getSheetNames();
// //根据表名切换当前工作表
// $this->excel->setActiveSheetIndexByName($this->first_sheet_name);
// //得到当前工作表对象
// $curSheet = $this->excel->getActiveSheet();
// 第一个sheet
$curSheet = $this->excel->getSheet(0);
// //获取当前工作表最大行数
// $rows = $curSheet->getHighestRow();
// //获取当前工作表最大列数,返回的是最大的列名,如:B
// $cols = $curSheet->getHighestColumn();
// //将当前工作表名当键,内容为值存入数组
// $data = [];
// //大写字母A的ASCII值是65 A-Z对应65-90
// // for($j = 'A'; $j <= $cols; $j++ ){
// // for($k = 1; $k <= $rows; $k++){
// // $key = $j.$k;
// // $value = $curSheet->getCell($key)->getValue();
// // $data[$key] = $value;
// // }
// // } 结果为一维数组
// 调用 PHPExcel_Worksheet toArray 方法
$this->data = $curSheet->toArray();
}
public function getSheetData($index = 0)
{
$curSheet = $this->excel->getSheet($index);
$data = $curSheet->toArray();
return $data;
}
private function getSalesData()
{
$curSheet = $this->excel->getSheet(0);
// 调用 PHPExcel_Worksheet toArray 方法
// return $curSheet->toArray(); // 数据量大时太慢,太卡
// //获取当前工作表最大行数
$rows = $curSheet->getHighestRow();
// //获取当前工作表最大列数,返回的是最大的列名,如:B
// $cols = $curSheet->getHighestColumn();
$data = [];
for ($k=2; $k <= $rows ; $k++) { // 第一行图标忽略
$row = [];
// 大写字母A的ASCII值是65 A-Z对应65-90
for($j = 'A'; $j <= 'P'; $j++ ){ // 有用的数据只到 P
$key = $j.$k;
// $value = $curSheet->getCell($key)->getValue(); // 含公式
$row[] = trim($curSheet->getCell($key)->getFormattedValue()); // 公式计算后的值
}
array_push($row, $k);
$data[] = $row;
}
$this->salesData = $data;
$data = null; // 清空数据
}
}
|