GVKun编程网logo

织梦dedecms后台文章数据如何导出到excel(织梦怎么采集文章)

13

本篇文章给大家谈谈织梦dedecms后台文章数据如何导出到excel,以及织梦怎么采集文章的知识点,同时本文还将给你拓展DEDECMS批量导入excel数据到后台文章系统的开发教程、dedecms织梦

本篇文章给大家谈谈织梦dedecms后台文章数据如何导出到excel,以及织梦怎么采集文章的知识点,同时本文还将给你拓展DEDECMS批量导入excel数据到后台文章系统的开发教程、dedecms织梦怎么自定义表单导出到excel、dedecms织梦自定义表单导出到excel、dede织梦后台增加php导出到excel功能不出现乱码等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

织梦dedecms后台文章数据如何导出到excel(织梦怎么采集文章)

织梦dedecms后台文章数据如何导出到excel(织梦怎么采集文章)

 
织梦dedecms后台文章数据导出到excel这个功能比较实用的,因为,很多公司虽然有网站,但是,公司其它部门可能还要把公司数据导出到纸上面,以便研究公司数据之用,所以,很多的公司对这个功能就要求使用。
 
导出全部勾选的文章原理是:
 
   *步:批量获取选中的id,这个是由织梦的里面封装的js实现的。
 
     第二步:把获取到的文章id 进行处理转换成  字符串 ,例如  1,2,3,5,6
 
     实现代码是:
 
        if( !empty($aid) && empty($qstr) ) $qstr = $aid;
 
       
 
        if($qstr=='')
 
        {
 
            ShowMsg('参数无效!',$ENV_GOBACK_URL);
 
            exit();
 
        }
 
        $qstrs = explode('`',$qstr);
 
        $idstrs = implode(',', $qstrs);
 
   第三步:查询要导出的数据:
 
   sql语句是:Select * From `dede_archives` where id in($idstrs)
 
    也就是说这里使用了 sql语言里面 in 来查询表中的某些id。
 
   只要你把上面的三步弄明白了,那么,这个功能就实现了。
 
===============实现方法=======================
 
    上面那三步只是分析如何实现的,那里面的代码不用管,下面是具体的实现代码,请跟着一步一步操作。
 
  下载phpexcel类库,官方已经搬到这里了:https://github.com/PHPOffice/PHPExcel
 
   1)下载后把Classes文件夹放到  /dede/目录里面。
 
   2)复制下面的代码保存到文件download_excel.php里面,也放到/dede/目录里面。
 
测试:
 
    在浏览器里面输入:localhost/dedecms/dede/download_excel.php?action=allexport&aid=86`87
 
  注意:请把红色的路径换上你的域名,上面因为我在子目录dedecms装的程序,如果你装在根目录里面,则去掉这个dedecms。
 
    86`87:表示把文章id为86和87的文章导出来。
 
    
 
导出功能代码:
 
<?php
require_once(dirname(__FILE__)."/config.php");
 
if ($action == 'allexport') {
       //批量获取文章id  www.adminbuy.cn 织梦模版网
            if( !empty($aid) && empty($qstr) ) $qstr = $aid;
            
            if($qstr=='')
            {
                ShowMsg('参数无效!',$ENV_GOBACK_URL);
                exit();
            }
            $qstrs = explode('`',$qstr);
            $idstrs = implode(',', $qstrs);
        include_once (dirname(__FILE__).'/Classes/PHPExcel.php');
        // Create new PHPExcel object
        $objPHPExcel = new PHPExcel();
        $objActSheet = $objPHPExcel->getActiveSheet();
        // Set document properties
        $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")->setLastModifiedBy("Maarten Balliauw")->setTitle("Office 2007 XLSX Test Document")->setSubject("Office 2007 XLSX Test Document")->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")->setKeywords("office 2007 openxml php")->setCategory("Test result file");
        $objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('A1', 'id')
        ->setCellValue('B1', '标题')
        ->setCellValue('C1', '发布时间')
        ->setCellValue('D1', '会员id')
        ->setCellValue('E1', '栏目id');
        $query = "Select * From `dede_archives` where id in($idstrs) ";
        $dsql->SetQuery($query);
        $dsql->Execute();
        $index = 1;
        while ($row = $dsql->GetArray()) {
                $index++;
                $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A' .$index, $row['id'])
                ->setCellValue('B' .$index, $row['title'])
                ->setCellValue('C' .$index, date("Y-m-d",$row['senddate']))
                ->setCellValue('D' .$index, $row['mid'])
                ->setCellValue('E' .$index, $row['typeid']);
        }
        // Rename worksheet
        $objPHPExcel->getActiveSheet()->setTitle('Simple');
        // Set active sheet index to the first sheet, so Excel opens this as the first sheet
        $objPHPExcel->setActiveSheetIndex(0);
        // Redirect output to a client’s web browser (Excel5)
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="list.xls"');
        header('Cache-Control: max-age=0');
        $objWriter = PHPExcel_IOFactory :: createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');
        exit;
}
?>
 
 
结果:
 
 导出86,87
 
==============完整版====================
 
上面只是让你测试,不用写做太多事,建议先把上面的测试成功了,再看下面的,  下面才是真正应用到网站里面的。
 
     上面已经实现导出功能,但是,总不能在浏览器里面输入文章id吧。
 
  *终还是通过后台选择文章,然后,导出。
 
    这个功能也已经实现了。
 
 
 
   在后台添加一个导出文章按扭“导出文档”。
 
   在content_list.htm里面添加按扭代码:
 
<a href="javascript:eportArc(0)"> 导出文档 </a>
 
批量获取id方法:
 
    1.  实现代码是通过在/dede/js/list.js添加一个批量获取id函数。
 
   代码如下所示:
 
   function eportArc(aid){
 
    var qstr=getCheckboxItem();
 
    if(aid==0) aid = getOneItem();
 
        if(qstr=='')
 
    {
 
        alert('必须选择一个或多个文档!');
 
        return;
 
    }
 
    location="download_excel.php?aid="+aid+"&action=allexport&qstr="+qstr;
 
}
 
  2. 注册这个函数到上下文菜单
 
即在 函数  function ShowMenu(evt,obj,aid,atitle)里面注册,代码是:
 
new ContextItem("导出的文档",function(){ eportArc(aid); }),
 
本文章网址:http://www.ppssdd.com/code/1464.html。转载请保留出处,谢谢合作!

DEDECMS批量导入excel数据到后台文章系统的开发教程

DEDECMS批量导入excel数据到后台文章系统的开发教程

对于一些企业网站或者淘宝客类网站经常会需要将一些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开发完整的代码:

header("Content-type:text/html;charset=utf8");

require_once('/../Dedecms/include/common.inc.PHP');

error_reporting(E_ALL);

set_time_limit(0);

date_default_timezone_set('Europe/London');

/** Include path **/

set_include_path(get_include_path() . PATH_SEParaTOR . '../../../Classes/');

/** PHPExcel_IOFactory */

include 'PHPExcel/IOFactory.PHP';

if(!empty($_GET)){

$typeid = $_GET['typeid'];

$dopost = $_GET['do'];

if($dopost == "exdata"){

if(!empty($_GET['n'])){

$inputFileName = './'.$_GET['n'].'.xlsx';

$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);

$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true);

$rowarr=array();

$dsql->Execute('all',"select bio2,bio1 from `dede_addonshop`");

while ($rowall = $dsql->GetArray('all')) {

$rowarr[]=$rowall;

}

foreach ($sheetData as $v) {

foreach ($rowarr as $vt) {

if(in_array($v['B'],$vt)&&$v['A']==$vt['bio1']){

echo "货号为:".$v['B']."
厂商为:".$v['A']."
的数据已在表中,请在excel文件里面删除这一条后再添加!";

exit;
}

}
}

//附加表插入数据前处理

$row = $dsql->Getone("select aid,bio2 from `dede_addonshop` order by aid desc");

if(!empty($row)){

$aid = $row['aid'];

$bio2 = $row['bio2'];

}else{

$aid = 0;

$bio2 = '';

}

//处理重复问题

if($bio2==$sheetData[count($sheetData)]['B']){

ShowMsg("不能重复添加内容",'javascript:;');

exit;

}

//主表插入数据前处理

$arcrow = $dsql->Getone("select id from `dede_archives` order by id desc");

if(!empty($arcrow)){

$arcid = $arcrow['id'];

}else{

$arcid = 0;

}

//微表插入数据前处理

$tinyrow = $dsql->Getone("select id from `dede_arctiny` order by id desc");

if(!empty($tinyrow)){

$tinyid = $tinyrow['id'];

}else{

$tinyid = 0;

}

//找出最大的id

$id = max($aid,$arcid,$tinyid);

$alphalpha = 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');

//字段数量

$fieldnum = count($sheetData[1]);

$fields = $fieldvalue = '';

for ($i=0; $i < $fieldnum; $i++) {

$fields .= $sheetData[1][$alphalpha[$i]]. ',';

}

$fields = substr($fields,-1);

//遍历数组

foreach ($sheetData as $value) {

$pubdate = GetMkTime(GetDateTimeMk(time()));

$click = mt_rand(50,200);

if($value['A']=='bio1'|$value['A']=='厂商'){

continue;

}

$id = $id+1;

//获取字段值$value['A'];

for ($i=0; $i < $fieldnum; $i++) {

$fieldvalue .= ",'".$value[$alphalpha[$i]]."' ";

}

//标题

$C = trim($value['C']);

//保存到主表

$senddate = time();

$arcquery = "INSERT INTO `dede_archives`(id,typeid,title,mid,channel,pubdate,senddate,click,ismake)VALUES ('$id','$typeid','$C','1','6','$pubdate','$senddate','$click','-1');";

$dsql->ExecuteNoneQuery($arcquery);

//保存到附近加表

$query = "INSERT INTO `dede_addonshop`(aid,$fields)

VALUES ('$id','$typeid'{$fieldvalue});";

$dsql->ExecuteNoneQuery($query);

$fieldvalue = '';

//保存到微表

$tinyquery = "INSERT INTO `dede_arctiny`(id,senddate)VALUES ('$id','$senddate');";

$dsql->ExecuteNoneQuery($tinyquery);

}

$num = count($sheetData)-2;

ShowMsg("恭喜,成功插入   ".$num."   条数据!",'javascript:;');

}

dedecms织梦怎么自定义表单导出到excel

dedecms织梦怎么自定义表单导出到excel

dedecms织梦怎么自定义表单导出到excel

dedecms织梦怎么自定义表单导出到excel?

修改2个文件,让织梦自定义表单自由导出到Excel表格里。

推荐学习:织梦cms

修改教程如下:

1、\dede\templets\diy_main.htm 找到

前台预览

<a href="diy_list.php?action=excel&diyid={dede:field.diyid/}" target="_blank">导出表单Excel</a>
登录后复制

2、\dede\diy_list.php 找到

array(&#39;post&#39;, &#39;list&#39;, &#39;edit&#39;, &#39;check&#39;, &#39;delete&#39;))
登录后复制

改成

array(&#39;post&#39;, &#39;list&#39;, &#39;edit&#39;, &#39;check&#39;, &#39;delete&#39;, &#39;excel&#39;))
登录后复制

继续找到

else
{
    showmsg(&#39;未定义操作&#39;, "-1");
}
登录后复制

在它的上面加入

else if($action == &#39;excel&#39;)
{
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename={$diy->name}_".date("Y-m-d").".xls");
$fieldlist = $diy->getFieldList();
echo "<table><tr>";
foreach($fieldlist as $field=>$fielddata)
{
echo "<th>{$fielddata[0]}</th>";
}
echo "<th>状态</th>";
echo "</tr>";
$sql = "SELECT * FROM {$diy->table} ORDER BY id DESC";
$dsql->SetQuery($sql);
$dsql->Execute(&#39;t&#39;);
while($arr = $dsql->GetArray(&#39;t&#39;))
{
echo "<tr>";
foreach($fieldlist as $key => $field)
{
echo "<td>".$arr[$key]."</td>";
}
$status = $arr[&#39;ifcheck&#39;] == 1 ? &#39;已审核&#39; : &#39;未审核&#39;;
echo "<td>".$status."</td>";
echo "</tr>";
}
echo "</table>";
}
登录后复制

以上就是dedecms织梦怎么自定义表单导出到excel的详细内容,更多请关注php中文网其它相关文章!

dedecms织梦自定义表单导出到excel

dedecms织梦自定义表单导出到excel

效果展示:

dedecms织梦自定义表单导出到excel

不写死任何字段,不写死任何东西,修改2个文件,让织梦自定义表单自由导出到Excel表格里。 修改教程如下: 1、\dede\templets\diy_main.htm 找到

PHP">前台预览

在它的下面加入一行

PHP">| PHP?action=excel&diyid={dede:field.diyid/}" target="_blank">导出表单Excel

2、\dede\diy_list.PHP 找到

PHP">else { showmsg('未定义操作',"-1"); }

在它的上面加入

name}_".date("Y-m-d").".xls"); $fieldlist = $diy->getFieldList(); echo "$fielddata) { echo "{$fielddata[0]}"; } echo "状态"; echo "sql->SetQuery($sql); $dsql->Execute('t'); while($arr = $dsql->GetArray('t')) { echo " $field) { echo "

display:none;" id="__kindeditor_bookmark_end_34__">

dede织梦后台增加php导出到excel功能不出现乱码

dede织梦后台增加php导出到excel功能不出现乱码

 

dede织梦系统怎样导出后台的新闻或自定义模型中的数据到excel,并且不出现乱码

在后台目录创建一个php文件toexcel.php,在Z上面加入代码;

require_once(dirname(__FILE__).'/config.php');

require_once(DEDEINC.'/typelink.class.php');

require_once(DEDEINC.'/datalistcp.class.php');

require_once(DEDEADMIN.'/inc/inc_list_functions.php');
 

加入导出到excel类;

class Excel

{    

private $head;     

private $body; 

public function addHeader($arr){        

foreach($arr as $headVal){            

$headVal = $this->charset($headVal);             

$this->head .= "{$headVal} ";        

}         

$this->head .= " ";     

public function addBody($arr){         

foreach($arr as $arrBody){             

foreach($arrBody as $bodyVal){                 

$bodyVal = $this->charset($bodyVal);                 

$this->body .= "{$bodyVal} ";             

}             

$this->body .= " ";        

}     

public function downLoad($filename=''){         

if(!$filename)             

$filename = date('YmdHis',time()).'.xls';         

header("Content-type:application/vnd.ms-excel");         

header("Content-Disposition:attachment;filename=$filename");          

header("Content-Type:charset=gb2312");         

if($this->head)            

echo $this->head;         

echo $this->body;     

public function charset($string){         

return mb_convert_encoding($string,'GBK','auto');    



 

代码解释:

1.输出列名数组,并转码

public function addHeader($arr){        

foreach($arr as $headVal){            

$headVal = $this->charset($headVal);             

$this->head .= "{$headVal} ";        

}         

$this->head .= " ";     



 

2.输出导出内容数组,并转码

public function addBody($arr){         

foreach($arr as $arrBody){             

foreach($arrBody as $bodyVal){                 

$bodyVal = $this->charset($bodyVal);                 

$this->body .= "{$bodyVal} ";             

}             

$this->body .= " ";        

}     

本文章网址:http://www.ppssdd.com/code/26890.html。转载请保留出处,谢谢合作!

我们今天的关于织梦dedecms后台文章数据如何导出到excel织梦怎么采集文章的分享就到这里,谢谢您的阅读,如果想了解更多关于DEDECMS批量导入excel数据到后台文章系统的开发教程、dedecms织梦怎么自定义表单导出到excel、dedecms织梦自定义表单导出到excel、dede织梦后台增加php导出到excel功能不出现乱码的相关信息,可以在本站进行搜索。

本文标签: