php Excel导入导出 , 及看及用

phpExcel导入导出

1. 下载PHPExcel的SDK,下载地址:

https://github.com/PHPOffice/PHPExcel

将SDK解压之后的Class文件拷贝到自己的项目。

2. 一个按钮实现导入功能

   <a href="{:U('Record/newCustomer')} " class="btn black">导出表格</a>
   
   <a href="javascript:0;" class="btn green" onclick="getExcel()">导入表格</a>
   
   
   <form action="{:U('Record/RecordExcel'))}" id="formExcel" method="post" enctype="multipart/form-data">
       <input type="file" style="display: none" id="file" onchange="postExcel()">
   </form>
   
   <script>
   
           function  getExcel() {
              $('#file').click();
           }
   
           function postExcel(){
               // # 创建formdata对象
               var formData = new FormData();
               // # 给formData对象添加<input>标签,注意与input标签的ID一致
               formData.append('file', $('#file')[0].files[0]);
               $.ajax({
                   url : "{:U('Record/newRecordExcel')}",//这里写你的url
                   type : 'POST',
                   data :  formData,
                   contentType: false,// 当有文件要上传时,此项是必须的,否则后台无法识别文件流的起始位置
                   processData: false,// 是否序列化data属性,默认true(注意:false时type必须是post)
                   dataType: 'json',//这里是返回类型,一般是json,text等
                   clearForm: true,//提交后是否清空表单数据
                   success: function(data) {   //提交成功后自动执行的处理函数,参数data就是服务器返回的数据。
                       aler('上传成功');
                   },
                   error: function(data, status, e) {  //提交失败自动执行的处理函数。
                       console.error(e);
                   }
               });
           }
   
       </script>

PHP后台代码

	//导入excel 文件
    public function newRecordExcel(){
            if (!empty($_FILES)){
                $upload = new \Think\Upload();                      // 实例化上传类
                $upload->maxSize   =     10485760 ;                 // 设置附件上传大小
                $upload->exts      =     array('xls','xlsx');       // 设置附件上传类型
                $upload->rootPath  = './Public/Excel/';             // 设置附件上传根目录
                $upload->autoSub   = false;                         // 将自动生成以photo后面加时间的形式文件夹,关闭
                // 上传文件
                $info   =   $upload->upload();                                  // 上传文件
                $exts   = $info['file']['ext'];                                 // 获取文件后缀
                $filename = $upload->rootPath.$info['file']['savename'];        // 生成文件路径名
                if(!$info) {                                                    // 上传错误提示错误信息
                    $this->error($upload->getError());
                }else{                                                          // 上传成功
                    import("Org.Util.PHPExcel.PHPExcel");
                    $PHPExcel = new \PHPExcel();                                // 创建PHPExcel对象,注意,不能少了\
                    if ($exts == 'xls') {                                       // 如果excel文件后缀名为.xls,导入这个类
                        $PHPReader = new \PHPExcel_Reader_Excel5();
                    } else

                        if ($exts == 'xlsx') {
                            import("Org.Util.PHPExcel.Reader.Excel2007");
                            $PHPReader = new \PHPExcel_Reader_Excel2007();

                        }
                    $PHPExcel=$PHPReader->load($filename);
                    $currentSheet = $PHPExcel->getSheet(0);                      // 获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
                    $allColumn = $currentSheet->getHighestColumn();              // 获取总列数
                    $allRow = $currentSheet->getHighestRow();                    // 获取总行数
                    for ($i = 3; $i <= $allRow; $i++) {
                        $data_p['team_name'] =$PHPExcel->getActiveSheet()->getCell("A" . $i)->getValue();
                        $data_p['c_username'] =$PHPExcel->getActiveSheet()->getCell("B" .$i)->getValue();
                        $data_p['m_username'] =$PHPExcel->getActiveSheet()->getCell("C" .$i)->getValue();
                        $data_p['phone'] = $PHPExcel->getActiveSheet()->getCell("D". $i)->getValue();
                        $data_p['source'] =$PHPExcel->getActiveSheet()->getCell("E" .$i)->getValue();
                        $data_p['age'] =$PHPExcel->getActiveSheet()->getCell("F" . $i)->getValue();
                        $data_p['sex'] =$PHPExcel->getActiveSheet()->getCell("G" . $i)->getValue();
                        $data_p['career'] =$PHPExcel->getActiveSheet()->getCell("H" . $i)->getValue();
                        $data_p['hobby'] =$PHPExcel->getActiveSheet()->getCell("I" . $i)->getValue();
                        $data_p['character'] =$PHPExcel->getActiveSheet()->getCell("J" . $i)->getValue();

                        //操作数据库
                        $ex=M('auction_goods')->add($data_p);
                    }
                    if($ex){
                        $this->success("导入成功");
                    }else{
                        $this->error("导入失败,原因可能是excel表中格式错误","5");// 提示错误
                    }
                }
            }else {
                $this->display();
            }

    }

php导出

/*
* excel导出
* $expTitle  Excel 文件名
* $expCellName	arr//导出excel中各项名称
* $expTableData 数据库数据
* */
function exportExcel($expTitle, $expCellName, $expTableData)
{
    vendor("PHPExcel.PHPExcel");
    $xlsTitle = iconv('utf-8', 'gb2312', '导出文件');
    $fileName = $expTitle . date('_YmdHis');// 导出文件名称
    $cellNum = count($expCellName);
    $dataNum = count($expTableData);
    $objPHPExcel = new \PHPExcel();
    $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');
    $objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1');//合并单元格
    for ($i = 0; $i < $cellNum; $i++) {
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '2', $expCellName[$i][1]);
    }
    // Miscellaneous glyphs, UTF-8
    for ($i = 0; $i < $dataNum; $i++) {
        for ($j = 0; $j < $cellNum; $j++) {
            $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i + 3), ' ' . $expTableData[$i][$expCellName[$j][0]]);
        }
    }
    header('pragma:public');
    header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"');
    header("Content-Disposition:inline;filename=$fileName.xls"); //attachment新窗口打印inline本窗口打印
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
    exit;
}


$info = 数据库出来的数据
$xlsCell = array(
                array('id', '序号'),
                array('team_name', '团队名字'),
                array('c_username', '顾客名字'),
                array('m_username', '顾问名字'),
                array('phone', '手机号'),
                array('source', '来源'),
                array('age', '年龄'),
                array('sex', '性别'),
                array('career', '职业'),
                array('hobby', '爱好'),
                array('character', '性格'),
            );  //导出excel中各项名称
            $filename = '准会员档案';//文件名字
            exportExcel($filename, $xlsCell, $info);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值