csv 导入导出——php

本文介绍了一种使用PHP实现Excel数据导入和导出的方法。重点讲解了如何解析上传的Excel文件,并将数据插入数据库;同时展示了如何从数据库获取数据并导出为CSV格式的文件。文章还特别提醒了在不同软件打开文件时可能出现的乱码问题。

直接上代码:

导入:

public function do_finance()
    {
        //判断上传文件存在值
        if(!empty($_FILES)){

            $filename = $_FILES['file']['tmp_name'];//被上传文件的名称
            $filetype = $_FILES["file"]["type"];//被上传文件的类型
            $filesize = $_FILES["file"]["size"];// 被上传文件的大小,以字节计
            $filetmp = $_FILES["file"]["tmp_name"];//存储在服务器的文件的临时副本的名称
            $fileerror = $_FILES["file"]["error"];//由文件上传导致的错误代码

            //判断是否上传成功
            if($fileerror==0){
                //判断是否是excel表格
                if($filetype=="application/vnd.ms-excel"){

                    $a=0;
                    //以读取的方式打开表格
                    $handle = fopen($filename, 'r');

                    //header("Content-type: applicationnd.ms-excel; charset=utf-8");
                    while (($arr = fgetcsv($handle, 10000, ",")) !== FALSE) {   
                        $a++;

                        if($a==1){continue;}

                            $data=array(
                                'add_date_time'=>iconv('gbk', 'utf-8',$arr['0']),
                                'summary'=>iconv('gbk', 'utf-8',$arr['1']),
                                'income'=>iconv('gbk', 'utf-8',$arr['2']),
                                'expense'=>iconv('gbk', 'utf-8',$arr['3']),
                                'remark'=>iconv('gbk', 'utf-8',$arr['4']),
                                
                                'admin_id' => $this->session->userdata('admin_id'),
                                'admin_add_date' =>date("Y-m-d"),
                            );

                        $this->db->insert("finance",$data);
                       }
                       //导入成功结束提示
                       show_msg("导入成功",site_url("manage/finance/"));
                    
                }else{

                    show_msg("上传文件非cvs格式,请重新上传");
                }


            }else{

                switch ($fileerror){
                    case 1:
                        show_msg("上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值.");
                        break;
                    case 2:
                        show_msg("上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值");
                        break;
                    case 3:
                        show_msg("文件只有部分被上传");
                        break;
                    case 4:
                        show_msg("没有文件被上传");
                        break;
                }


            }

        }

    }

 

导出:

 

public function get_pro(){

            if(!empty($_POST)){

                $day_time=$this->input->post('day_time');
            }
            header("Content-type: applicationnd.ms-excel; charset=utf-8");
            header("Content-Disposition: attachment; filename=$day_time.csv");


             $field='pro_cai,pro_figure,pro_width,pro_height,pro_diameter,pro_ls,pro_num,is_hot,is_sales,pro_brand,trade_price,promote_price,memo,brandid';


             $data['title']=array(
                'CAI',
                '花纹',
                '横截面宽度',
                '高度比',
                '轮胎直径',
                '载重/速度',
                '数量',
                '热销',
               '促销',
                '品牌',
                '批发价',
                '促销价',
                '备注',
                '品牌ID',
               );
              echo implode(',',$data['title'])."\n";

             $data['list']=$this->excel_model->get_pro($field,$day_time);
                 foreach($data['list'] as $item){

                       echo implode(',',$item)."\n";

                };


    }

 

注意:打开文件如果是excel2003/2007打开,肯定是乱码,用wps打开转格式就不会乱码了!

转载于:https://my.oschina.net/u/2462507/blog/743662

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值