千家信息网

基于PHP怎么制作通用的Excel导入程序

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍了基于PHP怎么制作通用的Excel导入程序的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于PHP怎么制作通用的Excel导入程序文章都会有所收获,下面
千家信息网最后更新 2025年11月09日基于PHP怎么制作通用的Excel导入程序

这篇文章主要介绍了基于PHP怎么制作通用的Excel导入程序的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于PHP怎么制作通用的Excel导入程序文章都会有所收获,下面我们一起来看看吧。

用PowerBuilder写过一个通用的导入程序,程序上也不难。

用前端框架来完成会有一点麻烦,主要在于

1、数据回显

如果是让用户选择一个Excel文件然后就直接入库,那程序就太简单了,问题是要先让用户看到结果,可能的话还可以修改,然后再保存到数据库中。

2、数据保存

因为以前C/S开发使用的是强连接,操作数据后直接提交即可;但现在前端和后端是弱连接,一次交互就需要配置相应参数才可能保存数据,动态的表格保存就有一点小麻烦。

作为一般性的要求,这个程序肯定是要应对数据库中的所有表。

那么只能先将数据表的字段设置传到PHP中,然后PHP提取Excel记录,按照LayUI对表记录的要求封装数据,传回到前端。

具体做法:

1、在数据库中创建表,记录要导入的表信息;

2、在前端列出表,让用户选择要导入的表;

3、根据选择的表,确定字段参数即对应的Excel列;

4、将前端选择传入到PHP中,提取Excel记录,传回前端;

5、用户确定要保存数据,点击保存,数据入库。

一天完成,功能全部正常,后面需要加入一些错误检测,还有文件名应该使用用户名加随机数来存储,这样可以防止多用户冲突,读取完删除。

这个程序主要涉及的就是动态对象、动态属性的创建与赋值。

完成的界面:

程序前端代码:

        〖通用Excel数据表导入〗                                  

后端PHP代码:

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);$strFalse="";$continue=true;$srcAddr="http://XX.XX.XX.XX";$returnArr=[];//准备返回的数组 if (array_key_exists('HTTP_ORIGIN',$_SERVER)) {        $origin = $_SERVER['HTTP_ORIGIN'];}else if (array_key_exists('HTTP_REFERER',$_SERVER)) {        $origin = $_SERVER['HTTP_REFERER'];}else {        $origin = $_SERVER['REMOTE_ADDR'];}if(substr($origin,0,15)!=substr($srcAddr,0,15)){        $continue=false;        $strFalse="拒绝访问".substr($origin,0,15)."!";}if(!$_SESSION[XxxYyyy']){        $continue=false;        $strFalse="请登录!";     }if($continue){                $OP=!empty($_POST['OP']) ? $_POST['OP'] : '';//得到操作类型                switch($OP){                        case 'getTableList'://数据表列表                                $sql="SELECT c01,c02 FROM dawnTable";                                $result=$ZTBConn->query($sql);                                $rows=$result->fetchAll(PDO::FETCH_ASSOC);                                $returnArr['data']=$rows;                                       break;                        case 'getSetList'://具体表的字段设置项目                                $selectTable=$_POST['selectTable'];                                             $sql1 = "SELECT count(*) FROM dawnField where c01='$selectTable'";                                $res = $ZTBConn->query($sql1);                                $rows = $res->fetch();                                $rowCount = $rows[0];                                $returnArr['code']=0;                                $returnArr['msg']="";                                $returnArr['count']=$rowCount;                                                                                  $sql="SELECT c01,c02,c03,c04,c05,c06,c07,c08,c09 FROM dawnField where c01='$selectTable'";                                $result=$ZTBConn->query($sql);                                $rows=$result->fetchAll(PDO::FETCH_ASSOC);                                $returnArr['data']=$rows;                                break;                        case 'getSet':                                $uploadFile = $_FILES["excelFile"];//得到上传的文件                                $excelBlob=file_get_contents($uploadFile['tmp_name']);                                file_put_contents("./TempFile/123.xls",$excelBlob, FILE_APPEND);//将文件内容写到磁盘上                                $excelData = new Spreadsheet_Excel_Reader();//创建 Reader                                $excelData->setOutputEncoding('utf-8');//设置文本输出编码                                $excelData->read("./TempFile/123.xls");//读取Excel文件                                //准备提取数据                                $excelSet=json_decode($_POST['excelSet'],true);//gettype($excelSet[0])                                $dbRows  =json_decode($_POST['dbRows'],true);                                $excelSetStartRow=$excelSet[0]['excelSet']['excelSetStartRow'];//起始行                                $excelSetEndRow  =$excelSet[0]['excelSet']['excelSetEndRow'];//结束行                                $excelSheet=$excelSet[0]['excelSet']['excelSheet']-1;//工作簿序号                                 $returnArr['code']=0;                                $returnArr['msg']="";                                $returnArr['count']=$excelSetEndRow - $excelSetStartRow +1;                                                                $data=[];                                try{                                                for ($i = $excelSetStartRow; $i <= $excelSetEndRow; $i++) {                                                                for($K=0;$Ksheets[$excelSheet]['cells'][$i][$fieldExcelCol] )){                                                                                        $fieldData=$excelData->sheets[$excelSheet]['cells'][$i][$fieldExcelCol];                                                                                }else{                                                                                        $fieldData='';                                                                                 }                                                                                //装入数组                                                                                $dbRows[$fieldName]=$fieldData;                                                                }                                                                array_push($data,$dbRows);                                                }                                }catch(PDOException $e){                                        $returnArr['data']=$e.getMessage();                                }                                $returnArr['data']=$data;                                break;                        case 'saveData':                                $insertSql=$_POST['insertSql'];                                         $assignSql=$_POST['assignSql'];                                         $tableName=$_POST['tableName'];                                         try{                                        $sql = "insert into $tableName($insertSql) values($assignSql)";                                        $result =$ZTBConn->exec($sql);                                        if ( $result>0 ) {                                                $returnArr['data']='OK';                                        }else{                                                $returnArr['data']="数据插入错误!";                                        }                                       }catch(Exception $exception){                                        $returnArr['data']=$exception->getMessage();                                }                                break;                        default:                                        $returnArr['data']="不支持的操作!";                                        break;                }}else{        $returnArr=$strFalse;}header('Content-type:text/json');echo json_encode($returnArr,JSON_UNESCAPED_UNICODE);//返回JSON格式的数据?>

关于"基于PHP怎么制作通用的Excel导入程序"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"基于PHP怎么制作通用的Excel导入程序"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

数据 程序 文件 选择 前端 字段 用户 数据表 制作 数组 准备 内容 动态 名称 对象 数据库 知识 代码 信息 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器桌面时间怎么调整 数据库每日备份计划 dnf可转区服务器列表 网络技术 信息安全 网络安全法数据跨境传输 数据库技术基础用到的电脑软件 网络安全法基本原则有 服务器安全配置论文 对日软件开发计划管理 网络安全法 方针 网络安全与信息保密区别 如何自动备份管家婆数据库 网络安全岗位政审 js键值对初始化添加数据库 领控HMI组态软件做数据库 华为事件涉及的网络安全分析 软件开发到深圳还是北京发展 小学校园网络安全保障制度 维普数据库官网简介 焦作鑫鼎网络技术有限公司 大数据库访问失败 大学软件开发半学期总结 dell 服务器延保 麻将游戏系统软件开发 苹果6怎么信任软件开发者 默纳克服务器通用版说明书 智慧云平台投标客户端服务器地址 网络安全大赛李现 软件开发中的常见设计模式 中学生网络安全主题教育活动教案
0