PHP操作Excel表格

PHPExcel的使用

最近在项目中需要把Excel表格中的数据导入到数据库中,同时还要求把数据库中的数据导出到Excel中,所以在这里对PHPExcel的操作进行总结,大致分为上面的两种情况。
PHPExcel类库下载地址http://download.csdn.net/detail/li741350149/9792683,下载完成解压到你的项目中去,就可以使用了。为了清晰,我的目录结构如下:

在使用前,请先引入文件

导入数据到数据库

require_once "./PHPExcel/PHPExcel/IOFactory.php";
require_once "./PHPExcel/PHPExcel.php";

Excel结构:

    /**
     * 导入数据到数据库
     * @param $file 要导入的Excel的文件路径
     * @return bool 保存数据成功,返回true;
     */
    public function setDataToDb($file)
    {
        date_default_timezone_set('PRC');//设置时区
        $fileType = PHPExcel_IOFactory::identify($file);//得到Excel的后缀类型
        $objReader = PHPExcel_IOFactory::createReader($fileType);
        $excelpath = $file;
        $objPHPExcel = $objReader->load($excelpath);//进行加载
        $sheet = $objPHPExcel->getSheet(0);//获取第一个sheet
        $highestRow = $sheet->getHighestRow();       //取得总行数
        $highestColumn = $sheet->getHighestColumn(); //取得总列数
        //进行循环,取出数据
        $data = array();
        for ($j = 2; $j <= $highestRow; $j++)               //从第二行开始读取数据
        {
            for ($k = 'A'; $k <= $highestColumn; $k++)      //从A列读取数据
            {
                $arr[$objPHPExcel->getActiveSheet()->getCell("$k" . 1)->getValue()] = $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();

            }
            var_dump($arr);
            echo '<br/>';
            /*
             * 操作数据库把数据存到数据库中,在这里只是简单的展示了出来。
             */
        }
        return true;
    }

这里只是把数据取出来,操作数据库并没有写,可以按照自己的逻辑进行编写

导出数据到Excel

    /**
    * @param $file 保存文件的路径
    * @param $filename 文件名字
    * @param $data 从数据库得到的数据
    */
    public function getDataFromDb($file,$filename,$data){

        date_default_timezone_set('PRC');//设置时区
        $objPHPExcel = new PHPExcel();
        $objPHPExcel -> setActiveSheetIndex(0); //设置Sheet当前活动的sheet为0;
        $objSheet = $objPHPExcel -> getActiveSheet(); //得到操作对象
        $objSheet -> setCellValue("A1","姓名") //设置Excel第一行的数据说明。
            -> setCellValue("B1","年龄")
            -> setCellValue("C1","电话")
            -> setCellValue("D1","地址")
            -> setCellValue("E1","编号");
        $j = 2;
        //把数据保存到Excel中
        foreach ($data as $k => $v){
            $objSheet -> setCellValue("A".$j,$v['姓名'])
                -> setCellValue("B".$j,$v['年龄'])
                -> setCellValue("C".$j,$v['电话'])
                -> setCellValue("D".$j,$v['地址'])
                -> setCellValue("E".$j,$v['编号']);
            $j++;
        }

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        //文件保存路径
        $path = $file . "/" . $filename . ".xls";
        $res = $objWriter->save($path);

        //把生成的Excel文件下载到本地
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.mb_convert_encoding($filename.".xls","gb2312","utf-8"));  //转换文件名的编码
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($path));
        ob_clean();
        flush();
        readfile($path);
    }

数据在这里只是模拟出来的。并不是从数据库中得到的。同时把生成的Excel通过浏览器下载到本地。

生成的样式

Test.php中的代码:

<?php
/**
 * 测试Excel.class.php类
 * User: Administrator
 * Date: 2017/3/29 0029
 * Time: 16:19
 */
require_once "Excel.class.php";
$file = "D:/employee.xlsx";
$excel = new Excel();

//$excel -> setDataToDb($file);

$file = "D:";
$data = array(
    array("姓名" => "小明",'年龄' => 12,"电话" => "12345678910","地址" => "郑州","编号" => 1254),
    array("姓名" => "小华",'年龄' => 13,"电话" => "12345678912","地址" => "郑州","编号" => 1255),
    array("姓名" => "小张",'年龄' => 14,"电话" => "12345678913","地址" => "郑州","编号" => 1256),
    array("姓名" => "小杨",'年龄' => 15,"电话" => "12345678918","地址" => "郑州","编号" => 1257),
);
$excel -> getDataFromDb($file,'lijiafei',$data);

总结

上面只是PHPExcel最简单的使用,PHPExcel还有很多功能可以使用,同时也可以操作多个Sheet,在这里也只是操作了一个。可以自行百度。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值