PHP在dede后台增加批量上传和导出报表的功能

16277次浏览

之前在做dedecms后台二次开发的时候,有需求是批量导入客户内容,然后导出报表,因此用到了php导出excel的功能,我做的是导出csv文件,其实csv文件和excel文件一样,都能用excel表格打开,csv的容量相比excel要大一些。我的方法如下:

导出csv文件

<?php
           require_once (dirname(__FILE__) . "/../include/common.inc.php");
            $output = fopen('','w') or die("can't open ");
                        header('Content-Type: application/csv');
                        header('Content-Disposition: attachment; filename="认证列表.csv"');
                        $arrkeys = array(
                            iconv('utf-8','gb2312','姓名'),
                            iconv('utf-8','gb2312','电话')//文件表头
                            );
                        fputcsv($output, $arrkeys);
                        //取得符合条件的数组
                         $sql = "SELECT * FROM dede_test";
                           $dsql->Execute('me',$sql);
                       while($row = $dsql->GetArray('me')){
                                $name =$row['name'];
                                $mobile= $row['mobile']; //循环

                                $arrkeys = array(
                                    iconv('utf-8','gb2312',$name),
                                    iconv('utf-8','gb2312',$mobile)
                                    );
                                fputcsv($output, $arrkeys);
                            }

                    fclose($output) or die("can't close ");
                    exit();
?>

导入xls文件

<?php
           require_once (dirname(__FILE__) . "/../include/common.inc.php");
           include_once("excel/reader.php");
                 $tmp = $_FILES['file']['tmp_name'];
                 if (empty ($tmp)) {
                       ShowMsg("请选择要导入的Excel文件!","test.php");
                         exit;
                 }

                 $save_path = "xls/";
                 $file_name = $save_path.date('Ymdhis') . ".xls";
                 if (copy($tmp, $file_name)) {
                         $xls = new Spreadsheet_Excel_Reader();
                         $xls->setOutputEncoding('utf-8');
                         $xls->read($file_name);
                         for ($i=2; $i<=$xls->sheets[0]['numRows']; $i++) {
                                 $name = $xls->sheets[0]['cells'][$i][1];
                                 $mobile = $xls->sheets[0]['cells'][$i][2]
                                 $data_values .= "('$name','$mobile'),";
                         }
                         $data_values = substr($data_values,0,-1);
                         $sql= "INSERT INTO dede_test (name,mobile) VALUES $data_values";
                        $dsql->ExecuteNoneQuery($sql);
                         $lastInsertID = $dsql->GetLastID();
                     if($dsql){
                            ShowMsg("成功导入!","test.php");
                     }else{
                            ShowMsg("导入失败!","test.php");
                     }
                 }
               exit();
?>

有问题可以留言交流,具体demo后期会贴上,急需要demo的可以留言!

Tags: php导出dedecms导出excel

相关文章: