php导入xlsx,php怎么引入php

发布时间:2022-11-24

本文目录一览:

  1. thinkphp3.1中的phpexcel导入怎么用
  2. 求PHP 读取xlsx 导入mysql代码
  3. thinkphp 怎么把数据库导入excel

thinkphp3.1中的phpexcel导入怎么用

首先,去PHPExcel官方网站下载PHPExcel,官方地址为;.我下的是1.8.0版本的.解压后发现还是蛮大的,有十几M,不知道其他版本是不是会小点. 这里写图片描述 把解压好的PHPExcel文件放在ThinkPHP的Vender文件夹下(专门放第三方类库的),如下图 这里写图片描述 其次,创建Excel转换数组类,并把它放在ThinkPHP\Extend\Library\ORG\Util目录下

class ExcelToArrary {
    public function __construct() {
        Vendor("PHPExcel.Classes.PHPExcel");//引入phpexcel类(留意路径,不了解路径可以查看下手册)
        Vendor("PHPExcel.Classes.PHPExcel.IOFactory"); //引入phpexcel类(留意路径)
    }
    public function read($filename,$encode,$file_type){
        if(strtolower ( $file_type )=='xls')//判断excel表类型为2003还是2007
        {
            Vendor("PHPExcel.Classes.PHPExcel.Reader.Excel5"); //引入phpexcel类(留意路径)
            $objReader = PHPExcel_IOFactory::createReader('Excel5');
        }elseif(strtolower ( $file_type )=='xlsx'){
            Vendor("PHPExcel.Classes.PHPExcel.Reader.Excel2007");//引入phpexcel类(留意路径)
            $objReader = PHPExcel_IOFactory::createReader('Excel2007');
        }
        $objReader-setReadDataOnly(true);
        $objPHPExcel = $objReader-load($filename);
        $objWorksheet = $objPHPExcel-getActiveSheet();
        $highestRow = $objWorksheet-getHighestRow();
        $highestColumn = $objWorksheet-getHighestColumn();
        $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
        $excelData = array();
        for ($row = 1; $row = $highestRow; $row++) {
            for ($col = 0; $col $highestColumnIndex; $col++) {
                $excelData[$row][] =(string)$objWorksheet-getCellByColumnAndRow($col, $row)-getValue();
            }
        }
        return $excelData;
    }
}

如右图这里写图片描述 现在来说Excel,表格的结构样式和MySQL样式要类似,表格样式如下(本人对Excel使用只是一般,所以如果有Excel大神做的报表,不知后果如何). 这里写图片描述 前端页面相关代码:

<div>
    <form method="post" action="{:U('Index/upload')}" enctype="multipart/form-data">
        <font>导入Excel数据:</font>
        <label for="file_stu">上传</label>
        <input name="file_stu" type="file" id="file_stu" />
        <h3>温馨提示:</h3>
        <p>请确认您的Excel表格类型是xls的,以免出现兼容问题.</p>
        <input type="submit" class="sure" value="导入" />
    </form>
</div>

最后,控制器部分使用了Thinkphp自带的上传类,使用unlink()函数是为了删除上传的excel表格,以免文件夹存入过多文件,调试代码时可先注释掉.或者不写也行,把删除文件的工作交给你们的运维.代码中foreach循环部分$v[]里的0, 1,2可以改动以下看看与Excel表格里的内容是什么关系.可以把数组打印出来看一看,你就很清楚了 相关代码:

public function upload(){
    import('ORG.Util.ExcelToArrary');//导入excelToArray类
    if (! empty ( $_FILES ['file_stu'] ['name'] )){
        import('ORG.Net.UploadFile');
        $upload = new UploadFile();// 实例化上传类
        $upload-maxSize = 3145728 ;// 设置附件上传大小
        $upload-allowExts = array('xls', 'xlsx');// 设置附件上传类型
        $upload-savePath = './Uploads/';// 设置附件上传目录
        if(!$upload-upload()) {// 上传错误提示错误信息
            $this-error($upload-getErrorMsg());
        }else{// 上传成功 获取上传文件信息
            $info = $upload-getUploadFileInfo();
        }
    }else{
        $this-error('(⊙o⊙)~没传数据就导入?!你在逗我?!');
    }
    //dump($info);die;
    $ExcelToArrary=new ExcelToArrary();//实例化
    $res=$ExcelToArrary-read($info[0]['savepath'].$info[0]['savename'],"UTF-8",$info[0]['extension']);//传参,判断office2007还是office2003
    $res = array_slice($res,1); //为了去掉Excel里的表头,也就是$res数组里的$res[0];
    //dump($res);
    foreach ( $res as $k = $v ){ //循环excel表
        $data[$k]['mobile'] = $v [0];//创建二维数组
        $data[$k]['name'] = $v [1];
        $data[$k]['duty'] = $v [2];
    }
    //dump($data);die;
    $result=M('appkey')-addAll($data);
    if(!$result){
        $this-error('导入数据库失败');
        exit();
    }else{
        $filename = './Uploads/'.$info[0]['savename'];//上传文件绝对路径,unlink()删除文件函数
        if (unlink($filename)) {
            $this-success ( '导入成功' );
        }else{
            $this-error('缓存删除失败');
        }
    }
}

求PHP 读取xlsx 导入mysql代码

<?php
header("content-Type: text/html; charset=utf8");
error_reporting(0);
$connection = mysql_connect('localhost', 'root', 'password'); // 连接数据库
mysql_select_db('test'); // 选择数据库
mysql_query("SET NAMES 'utf8'"); // 设置字符集
// 连接EXCEL
$conn = new com("adodb.connection", NULL, CP_UTF8);
$connstr = "Driver={Microsoft Excel Driver (*.xls)};DBQ=".realpath("excel.xls");
$conn->open($connstr);
$sql = "select * from [Sheet1$]"; // 查询EXCEL工作表
$rs = $conn->execute($sql);
while(!$rs->eof) {
    $id = trim($rs->fields(id)->value); // 将excel中Sheet1表中的id存到$id;
    $name = trim($rs->fields(name)->value); // 将excel中Sheet1表中的name存到$name;
    $sex = trim($rs->fields(sex)->value); // 将excel中Sheet1表中的sex存到$sex;
    // 生成SQL INSERT语句
    $sql = "INSERT INTO test(id, name, sex) VALUES('$id', '$name', '$sex')";
    mysql_query($sql);
    $rs->movenext;
}
mysql_close($connection);
?>

thinkphp 怎么把数据库导入excel

本文实例讲述了thinkPHP实现将excel导入到数据库中的方法。分享给大家供大家参考,具体如下:PHPExcel插件可点击此处本站下载。这里使用的是thinkphp框架的3.1版本,下载好压缩包,框架中的extend中的vendor文件夹中新建一个名为PHPExcel的文件夹,把classes里面的内容放到里面下面是前端页面提示:我在测试的时候遇到报错exception 'PHPExcel_Reader_Exception' with message 'The filename原因是由于excel的文件后缀可能不同,我的文件后缀是xlsx,然后给把他另存为了xls的文件,就可以了

<html>
<head></head>
<body>
    <form action="{pigcms::U('Jdb/abcdefgwulisuibian')}" method="post" enctype="multipart/form-data">
        <input type="file" name="import"/>
        <input type="hidden" name="table" value="tablename"/>
        <input type="submit" value="导入"/>
    </form>
</body>
</html>

下面是PHP的代码:

function abcdefgwulisuibianuplod(){
    $this->display(); //显示页面
}
function abcdefgwulisuibian(){
    if (!empty($_FILES)) {
        import("@.ORG.UploadFile");
        $config = array(
            'allowExts' => array('xlsx','xls'),
            'savePath' => './Public/upload/',
            'saveRule' => 'time',
        );
        $upload = new UploadFile($config);
        if (!$upload->upload()) {
            $this->error($upload->getErrorMsg());
        } else {
            $info = $upload->getUploadFileInfo();
        }
        vendor("PHPExcel.PHPExcel");
        $file_name = $info[0]['savepath'].$info[0]['savename'];
        $objReader = PHPExcel_IOFactory::createReader('Excel5');
        $objPHPExcel = $objReader->load($file_name,$encode='utf-8');
        $sheet = $objPHPExcel->getSheet(0);
        $highestRow = $sheet->getHighestRow(); // 取得总行数
        $highestColumn = $sheet->getHighestColumn(); // 取得总列数
        for($i=2;$i<=$highestRow;$i++) // 这个地方根据需要,一般第一行是名称,所以从第二行开始循环,也可以从第一行开始
        {
            $data['lianjieid'] = $objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue(); // 数据库字段和excel列相对应
            $data['yaoqingma'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
            $data['dlmima'] = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
            $data['ljdizhi'] = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();
            M('jdb')->add($data); // 插入数据库
        }
        $this->success('导入成功!');
    } else {
        $this->error("请选择上传的文件");
    }
}

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。