PHP的Excel导出与导入

news/2024/7/21 7:39:02 标签: php, excel, 开发语言

下载地址(注意php版本大于7.3可能会报错)

GitHub - PHPOffice/PHPExcel: ARCHIVED

解压

1、导出 Excel

php">$data=[
    ['name'=>'a','age'=>11],
    ['name'=>'b','age'=>22],
    ['name'=>'d','age'=>33],
];
$fileds=[
    "name"=>"名称",
    "age"=>"年龄",
];

push($data,'test',$fileds);
function push($data,$name='fage_Excel',$fields=array()){
    require_once("./Classes/PHPExcel.php");

    error_reporting(E_ALL);
    ini_set('date.timezone','PRC');
    $objPHPExcel = new \PHPExcel();
    ini_set('memory_limit', '-1');
    $username = 'a';
    /*以下是一些设置 ,什么作者  标题啊之类的*/
    $objPHPExcel->getProperties()->setCreator($username)
        ->setLastModifiedBy($username)
        ->setTitle("订单数据导出")
        ->setSubject("订单数据导出")
        ->setDescription("订单数据")
        ->setKeywords("excel")
        ->setCategory("result file");
    $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');

    //Excel表头
    $num = 0;
    foreach($fields as $k => $v){
        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension($cellName[$num])->setWidth(15);
        $objPHPExcel->setActiveSheetIndex(0)
            //Excel的第A列,uid是你查出数组的键值,下面以此类推
            ->setCellValue($cellName[$num]."1", $v);
        $num++;
    }

    /*Excel里的数据*/
    foreach($data as $k => $v){
        $num=$k+2;
        $vk=0;
        foreach($fields as $kk => $vv){
            if($kk=="imgurl")
            {
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$vk].$num,"http://wx.walch.net.cn/walchsales/Uploads/".$v[$kk]);
                //$objPHPExcel->setActiveSheetIndex(0)->
                $objPHPExcel->setActiveSheetIndex(0)->getCell($cellName[$vk].$num)->getHyperlink()->setUrl("http://wx.walch.net.cn/walchsales/Uploads/".$v[$kk]);
            }
            else if(strpos($kk,'img') > 0)
            {

                $v[$kk] =  str_replace(base_url(),"",$v[$kk]) ;
                $path='.'.$v[$kk];
                if($v[$kk]&&file_exists($path)){

                    $objPHPExcel->setActiveSheetIndex(0)->getRowDimension($num)->setRowHeight(80);
                    $img=new \PHPExcel_Worksheet_Drawing();
                    $img->setPath($path);//写入图片路径
                    $img->setHeight(100);//写入图片高度
                    //$img->setWidth(100);//写入图片宽度
                    $img->setOffsetX(1);//写入图片在指定格中的X坐标值
                    $img->setOffsetY(1);//写入图片在指定格中的Y坐标值
                    $img->setRotation(1);//设置旋转角度
                    $img->getShadow()->setVisible(true);//
                    $img->getShadow()->setDirection(10);//
                    $img->setCoordinates($cellName[$vk].$num);//设置图片所在表格位置
                    $img->setWorksheet($objPHPExcel->setActiveSheetIndex(0));//把图片写到当前的表格中
                }

            }
            else
            {

                if($kk == "number")
                {
                    $objPHPExcel->setActiveSheetIndex(0)->setCellValueExplicit($cellName[$vk].$num, $num-1);
                }
                else
                {
                    $objPHPExcel->setActiveSheetIndex(0)->setCellValueExplicit($cellName[$vk].$num, $v[$kk]);
                }
            }


            $vk++;
        }
    }

    $objPHPExcel->getActiveSheet()->setTitle('User');
    $objPHPExcel->setActiveSheetIndex(0);
    header('Content-type: application/vnd.ms-excel;charset=utf-8;name="' . $name . '.xlsx"');
    header("Content-Disposition: attachment; filename=$name.xls");
    header('Cache-Control: max-age=0');
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    ob_end_clean();
    $objWriter->save('php://output');
    exit;
}

2、导入Excel

先通过文件上传方式到服务器

php+html+js+ajax实现文件上传_php上传文件ajax-CSDN博客

读取数据

php">$file='test.xls';
$data=read($file);
var_dump($data);exit;
function read($file){
    require_once("./Classes/PHPExcel.php");
    // 加载Excel文件
    $objPHPExcel = PHPExcel_IOFactory::load($file);

    // 获取第一个工作表
    $sheet = $objPHPExcel->getActiveSheet();
    $rowDataAll=[];
      // 循环读取每一行数据
    foreach ($sheet->getRowIterator() as $row) {
        $rowData = array();
        // 循环读取每一列数据
        foreach ($row->getCellIterator() as $cell) {
            $rowData[] = $cell->getValue();
        }
        $rowDataAll[]=$rowData;

    }
    return $rowDataAll;
}


http://www.niftyadmin.cn/n/5137100.html

相关文章

深度学习炼丹炉

调参对象可针对模型本身和参数进行设置。模型本身的内容包括优化器、激活函数、正则化、损失函数等;参数设置包括:GPU数量、批处理大小、Epoch数量、初始化权重、学习率等。 针对权重初始化通常采用预训练模型或者xavier,其中前者为使用训练…

Nginx 实战指南:暴露出请求的真实 IP

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…

忘记密码不要慌,五步教你找回密码

本文是在 centos 8 和 MySQL 8 中进行,若其他环境无效欢迎留言评论探讨。 本文主要采用–skip-grant-tables 进行重置密码 1.停止MySQL服务 systemctl stop mysqld2.设置以root用户运行MySQL,跳过密码验证 mysqld --skip-grant-tables --usermysql &a…

SpringCloud 微服务全栈体系(九)

第九章 Docker 三、Dockerfile 自定义镜像 常见的镜像在 DockerHub 就能找到,但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像,就必须先了解镜像的结构才行。 1. 镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而…

医疗安全不良事件管理系统源码(PHP+ vue+laravel)

医疗安全不良事件管理系统全套源码 不良事件上报系统源码 不良事件管理系统帮助医院梳理建立不良事件上报与管理的一体化解决方案,包含上报内容、归口科室、上报流程及管理办法。提供面向医院的不良事件全过程管理平台,包含事件上报、事件处理、事件追踪…

asp.net旅游交流管理信息系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 旅游交流管理信息系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c# 语言开发 asp.net旅游交流网站1 应用技…

【经典面试】87 字符串解码

字符串解码 题解1 递归(程序栈)——形式语言自动机(LL(1)) : O(S)另一种递归(直观) 题解2 2个栈(逆波兰式)1个栈(参考官方,但是不喜欢) 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的…

idea使用MyBatisX插件

1.MyBatisX功能 (1).实现mapper和xml的跳转 (2).自动生成java文件,比如mapper、service、dao、pojo 2.安装MyBatisX插件 install后然后重启idea即可 3.使用MyBatieX实现mapper和xml跳转 (1).点击mapper中的红色图标即可跳转到对应的xml方…