名站网址导航为大驾家提供DedeCMS站点程序站点教程相关的知识,比如织梦程序安装教程,织梦程序系统故障等教程。
对于一些企业站点或者淘宝客类站点经常会需要将一些excel的数据批量导入到站点,通过批量导入来节省时间而不是从站点网站的后台一条一条的录入加数据。本教程就是以把excel数据导入到织梦程序系统(dedecms网站程序)为例子进行批量数据导入的网站开发,假设把excel数据导入到织梦程序主表dede_archives(还有微表和附加表,这里就用主表代表这三个表)里面。
批量导入excel数据原理:通过查询excel,把数据一条一条的读取出来,然后,通过咱们网站开发的php程序把数据导入到表里面。
通过上面的原理咱们知道,咱们可以把批量导入excel数据分为两部分,一部分是网站开发出从excel读取数据的程序,另一部分是网站开发出把读取出来的数据插入到数据库表dede_archives里面。
从excel读取数据程序网站开发
其实,这一步有一个老外已经帮咱们网站开发好了,这个老外网站开发了一套专门读取excel数据表的程序叫PhPExcel类库。
这个excel类库还包括其它的一些功能,这里不一一介绍,您可以下载来看看,这里只对读取excel进行讲解。
把读取出来的数据插入到主表dede_archives里面
当通过PhPExcel类库里面提供的类读取数据后,这一步就是把数据插入到数据库表里面,所以,这一个教程的网站开发其实就是在网站开发这一部分 ; 把从excel读取出来的数据插入到主表中的程序网站开发。
为了讲解方便,咱们把插入数据库表中的数据的网站文件名叫做excelinert.php ,下面就在这个网站文件里面进入程序网站开发,把读取出来的数据插入到数据库表中。
插入数据网站开发原理
1)网站开发前的准备:
在excelinsert.php里面加入一个header头的编码,目的是为了统一编码以免出现乱码:header("Content-type:text/html;charset=utf8");
引入织梦程序系统的公共网站文件common.inc.php,为什么要引入这个网站文件,咱们在插入数据库表前,首页要连接站点的数据库,如果不连接将无法插入数据库数据。要注意,引入网站文件的路径要改成您自己的,因为,我把织梦程序系统安装在了dedecms网站程序里面,所以,路径中有这个目录名称dedecms网站程序,如果您安装在根目录的话就去掉这个路径。
设置错误报告、设置时区、设置程序运行时间,当然,这个运行时间可以不设置、设置PhPExcel类的类库存路径,然后,引入IOFactory.php网站文件,这个网站文件是最重要的,本功能就是通过这个网站文件来处理的,这几个设置相关具体代码如下如下:
这些相关具体代码如下全是PhPExcel类里面提供的,所以,这里不用多解释。
2) 网站开发插入数据相关具体代码如下:
为了讲解方式,咱们将直接以这种形式来插入数据:https://www.bnxb.com/excelinsert.php?dopost=exdata&typeid=6&n=test1
表示通过网站文件excelinert.php插入excel里面的名称为test1的里面的数据,把这些数据插入到织梦程序数据库表dede_archvies里面,栏目id为6的表中,其中,dopost=exdata表示插入数据口令,因为,作一个判断的话,那什么人也能插入到您的数据库表里面数据了,这是非常可怕的,就像一个站点没有网站的后台一样,这是不是非常可能谁都可以进入站点网站的后台里面,同样的,如果不加这个口令的话,谁都可以插入数据,这是不安全的。
所以,在插入数据前先通过$GET超级数组获取到typeid、do和n的值,然后,进行对比看看有没有权限进行插入数据库操作,第一个判断应当是判断口令是否正确,如果这个都不正确的话,就不再向下操作了。
为了讲解方便,下面提供excelinsert.php网站开发完整的相关具体代码如下:
|
以上就是完整的把excel里面数据插入到数据库主表dede_archives里面的相关具体代码如下,是经过实际测试的完全没有问题,如果你做出来不行的话,可能是您引入的common.inc.php路径和引入的PhPExcel类库Classess类有问题,若有问题请检查这两个地方。
相关具体代码如下分析
1)第一步先判断问号后面是不是为空,即dopost=exdata&typeid=6&n=test1字符串是否为空,如果这个字符串都是空的话,其它,就不用操作了,直接通过出程序,显示:echo "密码或网站文件名错误!您无权做任何操作!";
只有当if(!empty($_GET))条件成立时,才有可能进入插入操作。
然后,获取typeid和do的值:
$typeid = $_GET['typeid']; $dopost = $_GET['do']; |
因为下面要对要插入到数据库表中数据时还要进行口令的判断,所以,这里获取do的值是必须的,但是,这里为什么一起要获取栏目id的值呢?因为,这里基本上要到最后一步才使用,为什么不等到使用时再获取呢?如果密码不对或其它原因的话,不能进行插入操作,那不是白白获取了$typeid的值,从相关具体代码如下优化的角度,这样不是最优的,但是,大驾家请注意,因为,下面要对获取到的$GET的数组进行操作,所以,为了保险起见,这时大这个地方先获取到栏目id的值,这样可以保证不会在后面出错,当然,如果您在网站开发时,能保证不会出错可以在使用$typeid时再获取也可以。
然后,判断口令是否正确,即if($dopost=="exdata")是否为真,若为真说明咱们在浏览器地址栏输入的口令就是正确的,否则,就是错误的,如果出错出退出程序不做任何操作。
如果正确,则获取n的值,网站文件excel的网站文件名$inputFileName。
然后,通过PhPExcel类获取到excel网站文件里面的数据保存到数组$sheetData里面。
2)判断要插入的数据是否已经存在于表dede_addonshop里面。
查询附加表dede_addonshop里面的字段bio2,bio1,并把查询出来的一维数组放到二维数组$rowall里面。
因为,把一条数据插入到织梦程序系统里面后,其实,是在织梦程序的主表、附加表和微表进入了插入操作,所以,在插入前都要先判断一下插入的数据是不是在这三个表中都已经存在了,如果已经存在了就不要进入插入操作了。
3)插入数据库表时最大数据id的判断
当向主表或附加表或微表加插入数据库前,还要判断一下这时主表或附加表或微表里面最大的id,把这个id查询出来,进入对比即:$id = max($aid,$arcid,$tinyid);
这样对比以后获取到的$id的值就是最大的,获取这个最大的$id后,就可以在这个$id的基本上增加$id,例如,当前表中最大的id为9,那么,下面咱们在插入数据时对应的id值就是从10开始,这是非常重要的,如果不做这个判断,那么,就会把原来的数据给覆盖掉。
3)遍历数组$sheetData插入数据
因为,通过PhPExcel获取到的数据是保存在$sheetData二维数据里面,类似array(array('a','b'),array('b','c')),所以,在遍历这个数组,然后,把这个数组里面的数据插入到织梦程序的主表、微表和附加表里面。
这里要注意$id = $id 1,这行相关具体代码如下为什么要做这行相关具体代码如下,是因为,如果没有这行相关具体代码如下那么,在插入数据时id的值一直是同一个,例如,$id=9,这样一直是9,这是不可能的,因为,一个站点面的每一篇文章的id都是不同的,如果全一样的话,可能站点里面显示数据就只有一条了,其它的全部被覆盖掉了。
关于DedeCMS站点程序站点教程相关的知识,就说到这里了希望能帮助朋友们。dede织梦程序网站的后台增加导出网站内容到excel功能相关具体操作方法 不会乱码