🔓 Ultimate Webshell - Penetration Testing Tool

📖 File Reader

<?php
namespace app\common;
use app\api\common\Common_user;
use app\BaseController;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Helper\Html as HtmlHelper;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
use think\facade\Db;
use think\facade\View;

/*导出导入处理*/
class Common_excel extends BaseController
{
    /**
     * 导入处理(老版本)
     * @param $file 文件地址
     */
    static function daoru($file)
    {
        ini_set('memory_limit','2000072M');
        set_time_limit(0);
        $exts =  substr(strrchr($file, '.'), 1);
        //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
        include("extend/PHPExcel/PHPExcel.php");
        //创建PHPExcel对象,注意,不能少了\
        $PHPExcel = new \PHPExcel();
        //如果excel文件后缀名为.xls,导入这个类
        if ($exts == 'xls') {
            $PHPReader = new \PHPExcel_Reader_Excel5();
        } else if ($exts == 'xlsx') {
            $PHPReader = new \PHPExcel_Reader_Excel2007();
        } else{
            $data = [
                'code'=>400,
                'msg'=>'文件格式错误',
            ];
            return $data;
        }
        //载入文件
        $PHPExcel = $PHPReader->load($file);
        //获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
        $currentSheet = $PHPExcel->getSheet(0);
        //获取总列数
        $allColumn = $currentSheet->getHighestColumn();
        //获取总行数
        $allRow = $currentSheet->getHighestRow();
        //循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
        for ($currentRow = 1; $currentRow <= $allRow; $currentRow++) {
            //从哪列开始,A表示第一列
            for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {
                //数据坐标
                $address = $currentColumn . $currentRow;
                //读取到的数据,保存到数组$arr中
                $data[$currentRow][$currentColumn] = $currentSheet->getCell($address)->getValue();
            }
        }
        $data = [
            'code'=>200,
            'msg' =>'ok',
            'list'=>$data,
        ];
        return $data;
    }

    /**
     * 导入处理
     * @param string $filename 文件地址
     * @param string $column 大写导入追后一列(不填则查询所有列)
     * @throws \PhpOffice\PhpSpreadsheet\Exception
     */
    static function enter($filename='',$column='')
    {
        //$filename = "/www/wwwroot/wuliu.gkktc.cn/public/uploads/file/20240418/37ce4fb678138e7dd8650a96656deff7.xlsx";
        ini_set('memory_limit','20072M');
        set_time_limit(0);
        $file_name = 'office_img2/'.date("Ymd",time());//存储图片文件夹名称
        $imageFilePath = dirname(dirname(dirname(__FILE__))).'/public/uploads/'.$file_name.'/'; //图片本地存储的路径
        if (!file_exists($imageFilePath)) { //如果目录不存在则递归创建
            mkdir($imageFilePath, 0777, true);
        }
        $exts =  substr(strrchr($filename, '.'), 1);
        if ($exts == 'xls') {
            $objRead = IOFactory::createReader('Xls');
        } else if ($exts == 'xlsx') {
            $objRead = IOFactory::createReader('Xlsx');
        }else{
            $data = [
                'code'=>400,
                'msg'=>'文件格式错误',
            ];
            return $data;
        }

        $objSpreadsheet = $objRead->load($filename);
        $objWorksheet = $objSpreadsheet->getSheet(0);
        $row_num = $objWorksheet->getHighestRow(); //获取总行数
        $col_num = $objWorksheet->getHighestColumn(); //获取总列数
        if ($row_num >= 100000){
            $data = [
                'code'=>400,
                'msg'=>'导入数据不可大于100000行',
            ];
            return $data;
        }
        if(!empty($column)){
            $cellRange = 'A1:'.$column.$row_num;
            $data_list = $objWorksheet->rangeToArray($cellRange, false, true, true, true);
        }else{
            $data_list = $objWorksheet->toArray(false, true, true, true);
        }
        $data_img = [];//纯图片数据
        foreach ($objWorksheet->getDrawingCollection() as $drawing) {
            list($startColumn, $startRow) = Coordinate::coordinateFromString($drawing->getCoordinates());
            $imageFileName = $drawing->getCoordinates().'_'.Common_user::suijishu(6).'_'. mt_rand(1000, 9999).time();
            if ($exts == 'xlsx'){
                $drawing_type = $drawing->getExtension();
            }else if($exts == 'xls'){
                $drawing_type = $drawing->getMimeType();
            }
            switch ($drawing_type) {
                case 'jpg':
                case 'jpeg':
                    $imageFileName .= '.jpg';
                    $source = imagecreatefromjpeg($drawing->getPath());
                    imagejpeg($source, $imageFilePath . $imageFileName);
                    break;
                case 'gif':
                    $imageFileName .= '.gif';
                    $source = imagecreatefromgif($drawing->getPath());
                    imagegif($source, $imageFilePath . $imageFileName);
                    break;
                case 'png':
                    $imageFileName .= '.png';
                    $source = imagecreatefrompng($drawing->getPath());
                    imagepng($source, $imageFilePath . $imageFileName);
                    break;
                case 'image/png':
                    $imageFileName .= '.png';
                    $source = $drawing->getImageResource();
                    imagepng($source, $imageFilePath . $imageFileName);
                    break;
                case 'image/jpeg':
                    $imageFileName .= '.jpg';
                    $source = $drawing->getImageResource();
                    imagepng($source, $imageFilePath . $imageFileName);
                    break;
            }
            $data_img[$startColumn.$startRow][] = '/public/uploads/'.$file_name.'/'.$imageFileName;
            $data_list[$startRow][$startColumn][] =  '/public/uploads/'.$file_name.'/'.$imageFileName;
        }
        $data = [
            'code'=>200,
            'data_list'=>$data_list,
        ];
        return $data;
    }

    /**
     * 导出处理
     * @param array $header 设置表格的表头数据
     * @param bool $type 保存文件类型
     * @param array $data 数据
     * @param string $fileName  文件名称
     * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
     */
    static function export($header = [], $type = true, $data = [], $fileName = "1910")
    {
        ini_set('memory_limit','2000072M');
        set_time_limit(0);
        // 实例化类
        $preadsheet = new Spreadsheet();
        // 创建sheet
        $sheet = $preadsheet->getActiveSheet();
        // 循环设置表头数据
        foreach ($header as $k => $v) {
            $sheet->setCellValue($k, $v);
        }
        /*合并单元格并设置标题 格式:$data = ['测试合并信息', 'A1:F1', 'A1', 'merge'];  (如果是合并列 下标用4merge_lie  下标1可不填)*/
        /*导出图片格式:$data = ['图片数组(全路径)', 'A1', '1', 'img']; */
        $data_daochu = [];
        foreach ($data as $v) {
            $v_count = count($v);
            if ($v_count == 4){
                if ($v[3] == 'merge' || $v[3] == 'merge_lie') {
                    $sheet->mergeCells($v[1]);
                    $sheet->setCellValue($v[2],$v[0]);
                }
                if ($v[3] == 'img'){
                    $img_data = $v[0];
                    foreach ($img_data as $k2 => $v2){
                        if ($k2 == 0){
                            $drawing = new Drawing();
                            $drawing->setName('Logo')->setDescription('Logo')->setPath($v2)->setHeight(32)->setCoordinates($v[1])->setOffsetX(3)->setOffsetY(3);
                            $drawing->setRotation(0);
                            $drawing->getShadow()->setVisible(true);
                            $drawing->getShadow()->setDirection(45);
                            $drawing->setWorksheet($sheet);
                            $sheet->getRowDimension($v[2])->setRowHeight(10, 'mm');//行高
                        }else{
                            $shuju = $k2 * 60;
                            $drawing = new Drawing();
                            $drawing->setName('Logo')->setDescription('Logo')->setPath($v2)->setHeight(32)->setCoordinates($v[1])->setOffsetX($shuju)->setOffsetY(3);
                            $drawing->setRotation(0);
                            $drawing->getShadow()->setVisible(true);
                            $drawing->getShadow()->setDirection(45);
                            $drawing->setWorksheet($sheet);
                            $sheet->getRowDimension($v[2])->setRowHeight(10, 'mm');//行高
                        }
                    }
                }
                if ($v[3] != 'merge' && $v[3] != 'merge_lie' && $v[3] != 'img'){
                    $data_daochu[] = $v;
                }
            }else{
                $data_daochu[] = $v;
            }
        }
        // 生成数据
        $sheet->fromArray($data_daochu, null, "A2");

        /*自定义样式处理*/
//        $hang_i_jiewei = count($data_daochu)+5;//总行数
//        //设置字体大小并设置字体
//        $sheet->getStyle("A1:M1")->getFont()->setBold(true)->setName('微软雅黑')->setSize(12);
//        //设置字体颜色
//        $sheet->getStyle('A1:M1')->getFont()->getColor()->setRGB('FFFFFFFF');
//        //设置单元格背景色
//        //$sheet->getStyle('A1:M1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB(Color::COLOR_GREEN);
//        //设置单元格宽度
//        $sheet->getDefaultColumnDimension()->setWidth(12);
//        $sheet->getColumnDimension('B')->setWidth(25);
//        //设置行高
//        //$sheet->getDefaultRowDimension()->setRowHeight(12,'mm');
//        $sheet->getRowDimension(1)->setRowHeight(13, 'mm');
//        for ($i=2;$i<=$hang_i_jiewei;$i++ ){
//            $sheet->getRowDimension($i)->setRowHeight(8, 'mm');
//        }
//        //设置居中
//        $sheet->getStyle("A1:M".$hang_i_jiewei)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
//        $sheet->getStyle("A1:M".$hang_i_jiewei)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
//        //获取单元格样式并设置自动换行
//        $styleArray = [
//            'alignment' => [
//                'wrapText' => true, // 设置自动换行
//                'horizontal' => Alignment::HORIZONTAL_LEFT, // 左对齐
//            ],
//        ];
//        $sheet->getStyle('J2:J'.$hang_i_jiewei)->applyFromArray($styleArray);
//        //设置单元格边框
//        $sheet->getStyle('A1:M'.$hang_i_jiewei)->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_THIN);
//        //设置换行
//        $sheet->getStyle('A1:M'.$hang_i_jiewei)->getAlignment()->setWrapText(true);

        // 设置下载与后缀
        if ($type) {
            header("Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            $type = "Xlsx";
            $suffix = "xlsx";
        } else {
            header("Content-Type:application/vnd.ms-excel");
            $type = "Xls";
            $suffix = "xls";
        }
        ob_end_clean();//清楚缓存区
        // 激活浏览器窗口
        header("Content-Disposition:attachment;filename=$fileName.$suffix");
        //缓存控制
        header("Cache-Control:max-age=0");
        // 调用方法执行下载
        $writer = IOFactory::createWriter($preadsheet, $type);
        // 数据流
        $writer->save("php://output");
    }

    /**
     * 导出处理-订单信息
     * @param array $header 设置表格的表头数据
     * @param bool $type 保存文件类型
     * @param array $data 数据
     * @param string $fileName  文件名称
     * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
     */
    static function export_order($header = [], $type = true, $data = [], $fileName = "1910")
    {
        ini_set('memory_limit','2000072M');
        set_time_limit(0);
        // 实例化类
        $preadsheet = new Spreadsheet();
        // 创建sheet
        $sheet = $preadsheet->getActiveSheet();
        // 循环设置表头数据
        foreach ($header as $k => $v) {
            $sheet->setCellValue($k, $v);
        }
        /*合并单元格并设置标题 格式:$data = ['测试合并信息', 'A1:F1', 'A1', 'merge'];  (如果是合并列 下标用4merge_lie  下标1可不填)*/
        /*导出图片格式:$data = ['图片数组(全路径)', 'A1', '1', 'img']; */
        $data_daochu = [];
        foreach ($data as $v) {
            $v_count = count($v);
            if ($v_count == 4){
                if ($v[3] == 'merge' || $v[3] == 'merge_lie') {
                    $sheet->mergeCells($v[1]);
                    $sheet->setCellValue($v[2],$v[0]);
                }
                if ($v[3] == 'img'){
                    $img_data = $v[0];
                    foreach ($img_data as $k2 => $v2){
                        if ($k2 == 0){
                            $drawing = new Drawing();
                            $drawing->setName('Logo')->setDescription('Logo')->setPath($v2)->setHeight(32)->setCoordinates($v[1])->setOffsetX(3)->setOffsetY(3);
                            $drawing->setRotation(0);
                            $drawing->getShadow()->setVisible(true);
                            $drawing->getShadow()->setDirection(45);
                            $drawing->setWorksheet($sheet);
                            $sheet->getRowDimension($v[2])->setRowHeight(10, 'mm');//行高
                        }else{
                            $shuju = $k2 * 60;
                            $drawing = new Drawing();
                            $drawing->setName('Logo')->setDescription('Logo')->setPath($v2)->setHeight(32)->setCoordinates($v[1])->setOffsetX($shuju)->setOffsetY(3);
                            $drawing->setRotation(0);
                            $drawing->getShadow()->setVisible(true);
                            $drawing->getShadow()->setDirection(45);
                            $drawing->setWorksheet($sheet);
                            $sheet->getRowDimension($v[2])->setRowHeight(10, 'mm');//行高
                        }
                    }
                }
                if ($v[3] != 'merge' && $v[3] != 'merge_lie' && $v[3] != 'img'){
                    $data_daochu[] = $v;
                }
            }else{
                $data_daochu[] = $v;
            }
        }
        // 生成数据
        $sheet->fromArray($data_daochu, null, "A2");
        /*自定义样式处理*/
        $hang_i_jiewei = count($data_daochu)+5;//总行数
        //设置字体大小并设置字体
        $sheet->getStyle("A1:O1")->getFont()->setBold(true)->setName('微软雅黑')->setSize(12);
        //设置单元格背景色
        $sheet->getStyle('A1:O1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('77d9d0');

        //设置单元格宽度
        $sheet->getDefaultColumnDimension()->setWidth(20);
        $sheet->getColumnDimension('A')->setWidth(10);//编号
        $sheet->getColumnDimension('B')->setWidth(25);//订单编号
        $sheet->getColumnDimension('F')->setWidth(35);//收货地址
        $sheet->getColumnDimension('J')->setWidth(35);//产品名称
        $sheet->getColumnDimension('K')->setWidth(15);//产品缩略图
        $sheet->getColumnDimension('N')->setWidth(30);//订单备注

        //设置行高
        //$sheet->getDefaultRowDimension()->setRowHeight(8,'mm');
        $sheet->getRowDimension(1)->setRowHeight(13, 'mm');
        for ($i=2;$i<=$hang_i_jiewei;$i++ ){
            //$sheet->getRowDimension($i)->setRowHeight(8, 'mm');
        }
        //设置居中
        $sheet->getStyle("A1:O".$hang_i_jiewei)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
        $sheet->getStyle("A1:O".$hang_i_jiewei)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
        //获取单元格样式并设置自动换行
        $styleArray = [
            'alignment' => [
                'wrapText' => true, // 设置自动换行
                'horizontal' => Alignment::HORIZONTAL_LEFT, // 左对齐
            ],
        ];
        $sheet->getStyle('J2:J'.$hang_i_jiewei)->applyFromArray($styleArray);
        $sheet->getStyle('F2:F'.$hang_i_jiewei)->applyFromArray($styleArray);
        $sheet->getStyle('N2:N'.$hang_i_jiewei)->applyFromArray($styleArray);
        //设置单元格边框
        $sheet->getStyle('A1:O'.$hang_i_jiewei)->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_THIN);

        // 设置下载与后缀
        if ($type) {
            header("Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            $type = "Xlsx";
            $suffix = "xlsx";
        } else {
            header("Content-Type:application/vnd.ms-excel");
            $type = "Xls";
            $suffix = "xls";
        }
        ob_end_clean();//清楚缓存区
        // 激活浏览器窗口
        header("Content-Disposition:attachment;filename=$fileName.$suffix");
        //缓存控制
        header("Cache-Control:max-age=0");
        // 调用方法执行下载
        $writer = IOFactory::createWriter($preadsheet, $type);
        // 数据流
        $writer->save("php://output");
    }

    /**
     * 导出处理-提现
     * @param array $header 设置表格的表头数据
     * @param bool $type 保存文件类型
     * @param array $data 数据
     * @param string $fileName  文件名称
     * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
     */
    static function export_tixian($header = [], $type = true, $data = [], $fileName = "1910")
    {
        ini_set('memory_limit','2000072M');
        set_time_limit(0);
        // 实例化类
        $preadsheet = new Spreadsheet();
        // 创建sheet
        $sheet = $preadsheet->getActiveSheet();
        // 循环设置表头数据
        foreach ($header as $k => $v) {
            $sheet->setCellValue($k, $v);
        }
        /*合并单元格并设置标题 格式:$data = ['测试合并信息', 'A1:F1', 'A1', 'merge'];  (如果是合并列 下标用4merge_lie  下标1可不填)*/
        /*导出图片格式:$data = ['图片数组(全路径)', 'A1', '1', 'img']; */
        $data_daochu = [];
        foreach ($data as $v) {
            $v_count = count($v);
            if ($v_count == 4){
                if ($v[3] == 'merge' || $v[3] == 'merge_lie') {
                    $sheet->mergeCells($v[1]);
                    $sheet->setCellValue($v[2],$v[0]);
                }
                if ($v[3] == 'img'){
                    $img_data = $v[0];
                    foreach ($img_data as $k2 => $v2){
                        if ($k2 == 0){
                            $drawing = new Drawing();
                            $drawing->setName('Logo')->setDescription('Logo')->setPath($v2)->setHeight(32)->setCoordinates($v[1])->setOffsetX(3)->setOffsetY(3);
                            $drawing->setRotation(0);
                            $drawing->getShadow()->setVisible(true);
                            $drawing->getShadow()->setDirection(45);
                            $drawing->setWorksheet($sheet);
                            $sheet->getRowDimension($v[2])->setRowHeight(10, 'mm');//行高
                        }else{
                            $shuju = $k2 * 60;
                            $drawing = new Drawing();
                            $drawing->setName('Logo')->setDescription('Logo')->setPath($v2)->setHeight(32)->setCoordinates($v[1])->setOffsetX($shuju)->setOffsetY(3);
                            $drawing->setRotation(0);
                            $drawing->getShadow()->setVisible(true);
                            $drawing->getShadow()->setDirection(45);
                            $drawing->setWorksheet($sheet);
                            $sheet->getRowDimension($v[2])->setRowHeight(10, 'mm');//行高
                        }
                    }
                }
                if ($v[3] != 'merge' && $v[3] != 'merge_lie' && $v[3] != 'img'){
                    $data_daochu[] = $v;
                }
            }else{
                $data_daochu[] = $v;
            }
        }
        // 生成数据
        $sheet->fromArray($data_daochu, null, "A2");

        /*自定义样式处理*/
        $hang_i_jiewei = count($data_daochu)+5;//总行数
        //设置字体大小并设置字体
        $sheet->getStyle("A1:I1")->getFont()->setBold(true)->setName('微软雅黑')->setSize(12);
        //设置单元格背景色
        $sheet->getStyle('A1:I1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('77d9d0');
        //设置单元格宽度
        $sheet->getDefaultColumnDimension()->setWidth(20);
        $sheet->getColumnDimension('A')->setWidth(10);
        $sheet->getColumnDimension('D')->setWidth(25);
        $sheet->getColumnDimension('E')->setWidth(28);
        $sheet->getColumnDimension('H')->setWidth(35);
        //设置行高
        //$sheet->getDefaultRowDimension()->setRowHeight(12,'mm');
        $sheet->getRowDimension(1)->setRowHeight(13, 'mm');
        for ($i=2;$i<=$hang_i_jiewei;$i++ ){
            $sheet->getRowDimension($i)->setRowHeight(8, 'mm');
        }
        //设置居中
        $sheet->getStyle("A1:I".$hang_i_jiewei)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
        $sheet->getStyle("A1:I".$hang_i_jiewei)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
        //设置单元格边框
        $sheet->getStyle('A1:I'.$hang_i_jiewei)->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_THIN);

        // 设置下载与后缀
        if ($type) {
            header("Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            $type = "Xlsx";
            $suffix = "xlsx";
        } else {
            header("Content-Type:application/vnd.ms-excel");
            $type = "Xls";
            $suffix = "xls";
        }
        ob_end_clean();//清楚缓存区
        // 激活浏览器窗口
        header("Content-Disposition:attachment;filename=$fileName.$suffix");
        //缓存控制
        header("Cache-Control:max-age=0");
        // 调用方法执行下载
        $writer = IOFactory::createWriter($preadsheet, $type);
        // 数据流
        $writer->save("php://output");
    }

    /**
     * 导出处理-充值
     * @param array $header 设置表格的表头数据
     * @param bool $type 保存文件类型
     * @param array $data 数据
     * @param string $fileName  文件名称
     * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
     */
    static function export_chongzhi($header = [], $type = true, $data = [], $fileName = "1910")
    {
        ini_set('memory_limit','2000072M');
        set_time_limit(0);
        // 实例化类
        $preadsheet = new Spreadsheet();
        // 创建sheet
        $sheet = $preadsheet->getActiveSheet();
        // 循环设置表头数据
        foreach ($header as $k => $v) {
            $sheet->setCellValue($k, $v);
        }
        /*合并单元格并设置标题 格式:$data = ['测试合并信息', 'A1:F1', 'A1', 'merge'];  (如果是合并列 下标用4merge_lie  下标1可不填)*/
        $data_daochu = [];
        foreach ($data as $v) {
            $v_count = count($v);
            if ($v_count == 4){
                if ($v[3] == 'merge' || $v[3] == 'merge_lie') {
                    $sheet->mergeCells($v[1]);
                    $sheet->setCellValue($v[2],$v[0]);
                }
                if ($v[3] != 'merge' && $v[3] != 'merge_lie'){
                    $data_daochu[] = $v;
                }
                if ($v[3] == 'img'){
                    $img_data = $v[0];
                    foreach ($img_data as $k2 => $v2){
                        if ($k2 == 0){
                            $drawing = new Drawing();
                            $drawing->setName('Logo')->setDescription('Logo')->setPath($v2)->setHeight(32)->setCoordinates($v[1])->setOffsetX(3)->setOffsetY(3);
                            $drawing->setRotation(0);
                            $drawing->getShadow()->setVisible(true);
                            $drawing->getShadow()->setDirection(45);
                            $drawing->setWorksheet($sheet);
                            $sheet->getRowDimension($v[2])->setRowHeight(10, 'mm');//行高
                        }else{
                            $shuju = $k2 * 60;
                            $drawing = new Drawing();
                            $drawing->setName('Logo')->setDescription('Logo')->setPath($v2)->setHeight(32)->setCoordinates($v[1])->setOffsetX($shuju)->setOffsetY(3);
                            $drawing->setRotation(0);
                            $drawing->getShadow()->setVisible(true);
                            $drawing->getShadow()->setDirection(45);
                            $drawing->setWorksheet($sheet);
                            $sheet->getRowDimension($v[2])->setRowHeight(10, 'mm');//行高
                        }
                    }
                }
            }else{
                $data_daochu[] = $v;
            }
        }
        // 生成数据
        $sheet->fromArray($data_daochu, null, "A2");

        /*自定义样式处理*/
        $hang_i_jiewei = count($data_daochu)+5;//总行数
        //设置字体大小并设置字体
        $sheet->getStyle("A1:G1")->getFont()->setBold(true)->setName('微软雅黑')->setSize(12);
        //设置单元格背景色
        $sheet->getStyle('A1:G1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('77d9d0');
        //设置单元格宽度
        $sheet->getDefaultColumnDimension()->setWidth(20);
        $sheet->getColumnDimension('A')->setWidth(10);
        $sheet->getColumnDimension('F')->setWidth(35);

        //设置行高
        //$sheet->getDefaultRowDimension()->setRowHeight(12,'mm');
        $sheet->getRowDimension(1)->setRowHeight(13, 'mm');
        for ($i=2;$i<=$hang_i_jiewei;$i++ ){
            $sheet->getRowDimension($i)->setRowHeight(8, 'mm');
        }
        //设置居中
        $sheet->getStyle("A1:G".$hang_i_jiewei)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
        $sheet->getStyle("A1:G".$hang_i_jiewei)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
        //设置单元格边框
        $sheet->getStyle('A1:G'.$hang_i_jiewei)->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_THIN);

        // 设置下载与后缀
        if ($type) {
            header("Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            $type = "Xlsx";
            $suffix = "xlsx";
        } else {
            header("Content-Type:application/vnd.ms-excel");
            $type = "Xls";
            $suffix = "xls";
        }
        ob_end_clean();//清楚缓存区
        // 激活浏览器窗口
        header("Content-Disposition:attachment;filename=$fileName.$suffix");
        //缓存控制
        header("Cache-Control:max-age=0");
        // 调用方法执行下载
        $writer = IOFactory::createWriter($preadsheet, $type);
        // 数据流
        $writer->save("php://output");
    }
}