首页 > 编程 > PHP > 正文

PHPEXCEL类的导入使用

2019-11-14 11:18:35
字体:
来源:转载
供稿:网友
1、去http://phpExcel.codeplex.com/下载phpexcel类包在根目录下:拷贝phpexcel类包我改为名 phpexcel改名以后的目录结构为phpexcel    --PHPExcel    --PHPExcel.php2、在根目录建立一个测试包Test1>建立一个mytest.html文件
<form action="mytest.php" method="post" enctype="multipart/form-data">    <input type="hidden" name="leadExcel" value="true">    <table align="center" width="90%" border="0">    <tr>       <td>        <input type="file" name="inputExcel"><input type="submit" value="导入数据">       </td>    </tr>    </table></form>2>建立一个mytest.php文件<?phpheader("Content-type:text/html;charset=utf-8");if($_POST['leadExcel'] == "true"){    $filename = $_FILES['inputExcel']['name'];    $tmp_name = $_FILES['inputExcel']['tmp_name'];$extend=strrchr ($filename,'.');$extendLower = strtolower($extend);     /*判别是不是.xls和.xlsx文件,判别是不是excel文件*/     if (($extendLower != ".xls") && ($extendLower != ".xlsx"))                  {          echo '不是Excel文件,请重新上传!'; exit;     }else{    $msg = uploadFile($filename,$tmp_name);//echo $msg;}}/***************定义导入Excel文件的方法********************************///导入Excel文件function uploadFile($file,$filetempname) {    //自己设置的上传文件存放路径    $filePath = './upFile/';    $str = "";   /** Error reporting */error_reporting(E_ALL);/** Include path **/set_include_path(get_include_path() . PATH_SEPARATOR . '../phpexcel/');/** PHPExcel */include 'PHPExcel.php';/** PHPExcel_IOFactory */include 'PHPExcel/IOFactory.php';/** PHPExcel_Reader */include 'PHPExcel/Reader/Excel5.php';include 'PHPExcel/Reader/Excel2007.php';    //注意设置时区    $time=date("y-m-d-H-i-s");//去当前上传的时间     //获取上传文件的扩展名    $extend=strrchr ($file,'.');//根据当前时间外加后五位产生一个 防止多个用户同时操作产生的重复概率$randnum = $time.str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);    //上传后的文件名    $name=$randnum.$extend;    $uploadfile=$filePath.$name;//上传后的文件名地址     //move_uploaded_file() 函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。    $result=move_uploaded_file($filetempname,$uploadfile);//假如上传到当前目录下  // echo $result;    if($result) //如果上传文件成功,就执行导入excel操作    {  if($extend==".xlsx"){       $objReader = PHPExcel_IOFactory::createReader('Excel2007');//use excel2007 for 2007 format }else{        $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format }        $objPHPExcel = $objReader->load($uploadfile);         $sheet = $objPHPExcel->getSheet(0);         $highestRow = $sheet->getHighestRow();           //取得总行数         $highestColumn = $sheet->getHighestColumn(); //取得总列数                /* 第一种方法        //循环读取excel文件,读取一条,插入一条        for($j=1;$j<=$highestRow;$j++)                        //从第一行开始读取数据        {             for($k='A';$k<=$highestColumn;$k++)            //从A列读取数据            {                 //                这种方法简单,但有不妥,以''合并为数组,再分割为字段值插入到数据库                实测在excel中,如果某单元格的值包含了导入的数据会为空                        //                $str .=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'';//读取单元格            }             //echo $str; die();            //explode:函数把字符串分割为数组。            $strs = explode("",$str);            $sql = "INSERT INTO te(`1`, `2`, `3`, `4`, `5`) VALUES (            '{$strs[0]}',            '{$strs[1]}',            '{$strs[2]}',            '{$strs[3]}',            '{$strs[4]}')";            //die($sql);            if(!MySQL_query($sql))            {                return false;                echo 'sql语句有误';            }            $str = "";        }          unlink($uploadfile); //删除上传的excel文件        $msg = "导入成功!";        */        /* 第二种方法*/        $objWorksheet = $objPHPExcel->getActiveSheet();        $highestRow = $objWorksheet->getHighestRow();        // echo 'highestRow='.$highestRow;       // echo "<br>";        $highestColumn = $objWorksheet->getHighestColumn();        $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//总列数       // echo 'highestColumnIndex='.$highestColumnIndex;       // echo "<br>";        $headtitle=array();        // for ($row = 1;$row <= $highestRow;$row++) //从第一行开始读取数据         for ($row = 2;$row <= $highestRow;$row++) //从第二行开始读取数据,一般第一行作为名称        {            $strs=array();            //注意highestColumnIndex的列数索引从0开始            for ($col = 0;$col < $highestColumnIndex;$col++)            {if($col=='6'){//指定g列为时间所在列 第七列    $strs[$col] = gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($objWorksheet->getCellByColumnAndRow($col, $row)->getValue()));   }else{   $strs[$col] =$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();}                             } $mylist[$row]['name'] = $strs[0];$mylist[$row]['spec'] = $strs[1];$mylist[$row]['unit'] = $strs[2];$mylist[$row]['nums'] = $strs[3];$mylist[$row]['brand'] = $strs[4];$mylist[$row]['note'] = $strs[5];$mylist[$row]['totime'] = $strs[6];$mylist[$row]['catid'] = $strs[7];$mylist[$row]['catname'] = $strs[8];        }$msg = $mylist;    }    else    {       $msg = "导入失败!";    }     return $msg;}/***************定义导入Excel文件的方法*****************************/?> 测试表格test.xls

数据如下:


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表