zoukankan      html  css  js  c++  java
  • thinkphp将excel导入到数据库中

    首先下载phpexcel插件

    http://pan.baidu.com/s/1hq56dFm

    我用的是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("请选择上传的文件");
                }    
             
    
        }

     会遇到一些问题,比如某些字段获取到的是object还包含字体什么的,请参考

    摘自

    http://www.thinkphp.cn/code/2143.html

    phpexcel,PHPExcel_RichText object
    在导入excel的时候会出现异常情况,有的问题出现PHPExcel_RichText object,错误代码如下

    1. PHPExcel_RichText Object ( [_richTextElements:PHPExcel_RichText:private] => Array ( [0] => PHPExcel_RichText_Run Object ( [_font:PHPExcel_RichText_Run:private] => PHPExcel_Style_Font Object ( [_name:protected] => 細明體 [_size:protected] => 12 [_bold:protected] => [_italic:protected] => [_superScript:protected] => [_subScript:protected] => [_underline:protected] => none [_strikethrough:protected] => [_color:protected] => PHPExcel_Style_Color Object ( [_argb:protected] => FF000000 [_parentPropertyName:protected] => [_isSupervisor:protected] => [_parent:protected] => ) [_isSupervisor:protected] => [_parent:protected] => [colorIndex] => 8 ) [_text:PHPExcel_RichText_TextElement:private] => 蜜糖皇后暖色胭脂 ) [1] => PHPExcel_RichText_Run Object ( [_font:PHPExcel_RichText_Run:private] => PHPExcel_Style_Font Object ( [_name:protected] => Calibri [_size:protected] => 12 [_bold:protected] => [_italic:protected] => [_superScript:protected] => [_subScript:protected] => [_underline:protected] => none [_strikethrough:protected] => [_color:protected] => PHPExcel_Style_Color Object ( [_argb:protected] => FF000000 [_parentPropertyName:protected] => [_isSupervisor:protected] => [_parent:protected] => ) [_isSupervisor:protected] => [_parent:protected] => [colorIndex] => 8 ) [_text:PHPExcel_RichText_TextElement:private] => The Honey Queen Honeycomb Blusher ) ) )
    复制代码

    为什么出现这个问题?我也不知道,度娘才知道是要“转文本格式”

    1. import("Org.Util.PHPExcel");   // 这里不能漏掉
    2. import("Org.Util.PHPExcel.IOFactory");
    3. $objReader = PHPExcel_IOFactory::createReader('Excel5');
    4. $objPHPExcel = $objReader->load($file_name,$encode='utf-8');
    5. /******   上面的代码可以不用看,下面的才是处理的重点     ******/
    6. // 获取excel C2的文本
    7. $cell = $objPHPExcel->getActiveSheet()->getCell('C2')->getValue(); 
    8. // 开始格式化 
    9. if(is_object($cell))  $cell= $cell->__toString();
    复制代码

    这是我浏览众多网页,提取最精简的解决办法;

    thinkphp3.2和phpexcel导入
    http://www.thinkphp.cn/code/2124.html

    thinkphp3.2和phpexcel导入,出现PHPExcel_RichText object解决办法
    http://www.thinkphp.cn/code/2143.html

    thinkphp3.2和phpexcel导出带生成图片完美案例
    http://www.thinkphp.cn/code/2112.html

  • 相关阅读:
    C# 自定义配置文件
    Mysql JSON字段提取某一个属性值的函数
    linux查看Java线程
    Idea书签管理器的使用
    springboot寻找property的顺序
    SpringBoot的spring-boot-starter有哪些(官方)
    SpringBoot打成jar包的配置方式
    netstat 常用参数总结
    Sentinel统计线程,QPS,RT的方式
    16. kubernetes RBAC
  • 原文地址:https://www.cnblogs.com/zonglonglong/p/4974017.html
Copyright © 2011-2022 走看看