tp5怎么使用PHPExcel ,简陋实现方式

浏览:9688 发布日期:2016/11/17 分类:业务逻辑 关键字: tp5 phpexcel
tp5怎么使用PHPExcel 。
tp5怎么使用PHPExcel

123456
...

tp5我还也还没有直接调用上phpexcel, 不过我的一个项目也要用phpexcel。我绕了一个圈,从外部把phpexcel加上到tp5上。思路如下:

1.直接下载phpexcel到 tp5的某个目录。 phpexcel是可以直接使用的,下载下来的带着很多demo实例。主要意思是实现了对某个excel文件解析成一个数组。我们需要的就是这个数组。

2. 通过tp5后台做好上传的excel文件,上传到的路径设置为第一步phpexcel需要读取的一个文件夹中。然后通过get传过去到phpexcel文件和文件名。

3. phpexcel 根据tp5 下某个文件 传来的excel文件名 进行解析成 数组。

4. 把这个数组存入数据库。 我这里手工又原生写的数据库链接,十分啰嗦,不变维护。理想的状态至少再把这个数组传回到 tp5 的框架里面去处理,我没有找到回传的方法。

2017-6-28今天上来看到评论上要demo代码,我去翻了一下代码,看看都是去年10月份写的了,时间以上具体路径都忘了,记住的往往是实现思路。

下面这个是PHPExcel里自带的exampleReader01.php文件,我就直接用的这个演示稍微改了一下实现的。我保存的路径是\vendor\PHPExcel\Documentation\Examples\Reader <html>
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

     <title>PHPExcel Reader Example #01</title>

 </head>
 <body>

    <!-- <h1>PHPExcel Reader Example #01</h1>
    <h2>Simple File Reader using PHPExcel_IOFactory::load()</h2> -->
    <?php
    header("Content-Type: text/html;charset=utf-8"); 
    /** Include path **/
    set_include_path(get_include_path() . PATH_SEPARATOR . '../../../Classes/');

    /** PHPExcel_IOFactory */
    include 'PHPExcel/IOFactory.php';

    if ($_GET["name"]) {

        //echo $_GET["name"]; 

        $filename = $_GET["name"]; 
        $userget  = $_GET["username"]; 

        # code...
        $inputFileName = './sampleData'.$filename;
        //echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' using IOFactory to identify the format<br />';
        $objPHPExcel = PHPExcel_IOFactory::load($inputFileName);


        //echo '<hr />';

        $sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);

        // var_dump($sheetData);
        // echo '不统计多维数组:'.count($sheetData,0); 
        // echo '或用sizeof为'.sizeof($sheetData,0);

        // var_dump($_SERVER['SERVER_NAME']);exit();
        //本地数据库,和在线数据库的切换功能;
        if ( $_SERVER['SERVER_NAME']=="localhost") {
            # code...
            $servername = "localhost";
            $username = "root";
            $password = "root";
            $dbname = "youme";
        } else {
            # code...
            // $servername = "7rg97t1x.2259.dnstoo.com";
            // $username = "c2j95tkx_f";
            // $password = "zv92ljv5";
            // $dbname = "c2j95tkx";
            $servername = "localhost";
            $username = "5915691c1e4cb";
            $password = "HTEFdhwo243";
            $dbname = "5915691c1e4cb";
        }        

        // 创建连接
        $conn = new mysqli($servername, $username, $password, $dbname);
        // 检测连接
        if ($conn->connect_error) {
            die("连接失败: " . $conn->connect_error);
        } 

        $conn->query("SET NAMES utf8");

        // var_dump("expression");exit();

        if ($_GET["m"]==1) {
            # 导入用户...
            
            for ($i=2; $i < count($sheetData,0)+1 ; $i++) { 
            # code...

                $gmmb = $sheetData["$i"] ["B"];
                $gmmc = $sheetData["$i"] ["C"];
                $gmmd = $sheetData["$i"] ["D"];
                $gmme = $sheetData["$i"] ["E"];
                $gmmf = $sheetData["$i"] ["F"];
                $gmmg = $sheetData["$i"] ["G"];
                $gmmh = $sheetData["$i"] ["H"];
                $gmmi = $sheetData["$i"] ["I"];
                $gmmj = $sheetData["$i"] ["J"];
                $gmmk = $sheetData["$i"] ["K"];
                $gmml = $sheetData["$i"] ["L"];
                $gmmm = $sheetData["$i"] ["M"];

 

            $sql2 = "INSERT INTO gmt_member(username, name, province,city,area,school,grade,class,serialnumber,telephone,type,level,number)
                VALUES ('$userget', '$gmmb', '$gmmc', '$gmmd', '$gmme', '$gmmf', '$gmmg', '$gmmh', '$gmmi', '$gmmj', '$gmmk', '$gmml', '$gmmm')";


                if ($conn->query($sql2) === TRUE) {
                    $idq = $i-1;
                    
                } else {
                    echo "Error: " . $sql2 . "<br>" . $conn->error;
                }

            }
            $done = count($sheetData,0)-1;
            echo "<h2>导入了".$done."个用户</h2>";

        } else {
            # // 导入问卷...

        
            $gmmb = $sheetData["2"] ["B"];
            $gmmc = $sheetData["2"] ["C"];
            $time = time();

            $sql = "INSERT INTO gmt_cate(catename, title,username,time)
            VALUES ('$gmmb', '$gmmc','$userget','$time')";

            // $conn->query($sql);

            if ($conn->query($sql) === TRUE) {
                    
                    echo "<h2>导入题目成功</h2>";
                } else {
                    echo "Error: " . $sql . "<br>" . $conn->error;
                }

            $idsql = mysqli_insert_id($conn);

            for ($i=2; $i < count($sheetData,0)+1 ; $i++) { 
            # code...

                $gmmd = $sheetData["$i"] ["D"];
                $gmme = $sheetData["$i"] ["E"];
                $gmmf = $sheetData["$i"] ["F"];
                $gmmg = $sheetData["$i"] ["G"];
                $gmmh = $sheetData["$i"] ["H"];
                $gmmi = $sheetData["$i"] ["I"];
                $gmmj = $sheetData["$i"] ["J"];
                $gmmk = $sheetData["$i"] ["K"];

            //var_dump($idsql);exit();

                $sql2 = "INSERT INTO gmt_cate_contens(cate, title, type, answer1, answer2, answer3, answer4, answer5, answer6)
                VALUES ('$idsql', '$gmmd', '$gmme', '$gmmf', '$gmmg', '$gmmh', '$gmmi', '$gmmj', '$gmmk')";


                if ($conn->query($sql2) === TRUE) {
                    $idq = $i-1;
                    echo "<h2>第".$idq."题导入成功</h2>";
                } else {
                    echo "Error: " . $sql2 . "<br>" . $conn->error;
                }

            }
        }
        $conn->close();


    }

    ?>




    <body>
        </html>
再简单说明几句:

1.代码第15行,set_include_path(get_include_path() . PATH_SEPARATOR . '../../../Classes/');

这个是接收thinkphp你后台的一个提交excel文件的接口。接收到了,就获得了上来的文件名和存储路径。

2.然后我们依托phpexcel的功能,获得一个数组

3.我把这个数组 对应自己数据库的需求 存入数据库,返回 导入完成了

导入的结果,去tinkphp后台就可以根据需要查询了。

其实我是完全脱离了thinkphp的,至少不用这这里重新手工设置数据库链接就好了,直接调用thinkphp配置文件里的
评论( 相关
后面还有条评论,点击查看>>