dede批量Excel表格发布工具如何操作?

99ANYc3cd6
预计阅读时长 27 分钟
位置: 首页 DEDE建站 正文

DedeCMS本身没有内置这样的功能,所以我们需要通过“二次开发”来实现。 这通常意味着需要编写一个小的PHP脚本,这个脚本会读取Excel文件,然后将里面的数据填充到DedeCMS的文章发布流程中。

dede批量excel表格发布工具
(图片来源网络,侵删)

下面我将为你提供两种实现方案:

  1. 【推荐】使用现成的第三方插件/工具:最快、最简单的方法。
  2. 【进阶】自己动手开发脚本:更灵活,能完全自定义。

使用现成的第三方插件/工具 (最简单快捷)

这是最适合大多数用户的方法,无需懂代码,下载安装即可使用。

步骤 1:寻找合适的工具

在DedeCMS的官方论坛、插件库或者第三方资源网站(如织梦吧、源码爱好者等)搜索关键词:

  • DedeCMS Excel批量发布
  • 织梦文章批量导入
  • DedeCMS 批量添加文章

步骤 2:下载并安装

  1. 下载工具:找到一个评价好、下载量高的工具包,通常是一个ZIP压缩文件。
  2. 上传文件:解压压缩包,根据说明将文件(通常是PHP文件)上传到你的DedeCMS网站根目录下的指定文件夹(如 dede/include/ 或新建的 excel_import/ 文件夹)。
  3. 设置权限:确保你上传的文件夹以及DedeCMS的数据表(dede_archives, dede_arctype 等)有写入权限,通常需要将 data 目录和 uploads 目录的权限设置为 755777(注意:777有安全风险,操作后记得改回)。
  4. 访问页面:在浏览器中访问你上传的脚本页面,http://你的网站.com/dede/excel_import.php

步骤 3:准备Excel表格

这是最关键的一步,你的Excel表格必须按照工具要求的格式来准备,否则会导入失败。

dede批量excel表格发布工具
(图片来源网络,侵删)

一个标准的Excel表格应该包含以下列(列名可以自定义,但内容必须对应):

栏目ID 作者 来源 tags (标签) 摘要 缩略图 发布时间
5 我的文章标题1 张三 本站 旅游,美食,攻略 这是一篇文章的摘要... (这里是文章的正文内容,可以使用HTML标签) /uploads/img1.jpg 2025-10-27 10:00:00
6 我的文章标题2 李四 转载 科技,AI,互联网 另一篇文章的摘要... (这里是文章的正文内容) /uploads/img2.jpg 2025-10-27 11:00:00

重要说明:

  • 栏目ID:这是必须的!你需要提前在DedeCMS后台“栏目管理”中查好你要发布文章的栏目ID,并填入Excel,如果不确定,可以登录后台查看。
  • 文章正文可以直接写纯文本,也可以包含HTML代码,<p> 段落标签、<img> 图片标签等。
  • 缩略图:填写图片的完整路径,/uploads/2025/10/27/a.jpg,确保图片已经上传到服务器。
  • 发布时间:格式通常是 YYYY-MM-DD HH:MM:SS
  • 保存格式:将Excel文件另存为 *`.CSV (逗号分隔)(.csv)`** 格式,这是大多数脚本读取的标准格式。

步骤 4:执行导入

  1. 在网页工具中,选择你准备好的CSV文件。
  2. 点击“上传”或“导入”按钮。
  3. 脚本会开始读取文件并逐条插入数据库,完成后会显示导入成功或失败的信息。
  4. 前往你的DedeCMS后台“内容管理”->“文档列表”,检查文章是否已成功发布。

自己动手开发脚本 (更灵活)

如果你有一定的PHP基础,或者找不到满意的第三方工具,可以自己动手写一个。

核心思路:

  1. 创建一个前端上传页面 (upload_excel.php)。
  2. 创建一个后端处理脚本 (process_excel.php)。
  3. 使用PHPExcel库(或其替代品 PhpSpreadsheet)来解析Excel文件。
  4. 解析数据后,调用DedeCMS的底层函数来模拟文章发布。

详细步骤:

第1步:准备PHPExcel库

  1. GitHub 下载 PhpSpreadsheet 库。
  2. 将下载的 vendor 文件夹和 src 文件夹(或者直接是 PhpSpreadsheet 文件夹)上传到你网站的某个目录,dede/PHPExcel/

第2步:创建上传页面 (upload_excel.php)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">DedeCMS Excel批量发布</title>
</head>
<body>
    <h1>请选择Excel文件进行批量发布</h1>
    <form action="process_excel.php" method="post" enctype="multipart/form-data">
        <input type="file" name="excel_file" accept=".xlsx, .xls, .csv" required>
        <button type="submit">开始导入</button>
    </form>
</body>
</html>

第3步:创建处理脚本 (process_excel.php)

这是核心部分,需要包含DedeCMS的核心文件,并解析Excel。

dede批量excel表格发布工具
(图片来源网络,侵删)
<?php
// 引入DedeCMS的核心文件,以便使用其函数和变量
require_once(dirname(__FILE__) . '/config.php');
require_once(DEDEINC . '/dedetemplate.class.php');
require_once(DEDEINC . '/archive.class.php');
// 引入PHPExcel库
require_once 'PHPExcel/Classes/PHPExcel.php';
// 检查是否有文件上传
if (isset($_FILES['excel_file']) && $_FILES['excel_file']['error'] == 0) {
    $fileTmpPath = $_FILES['excel_file']['tmp_name'];
    $fileName = $_FILES['excel_file']['name'];
    // 创建PHPExcel对象
    $PHPExcel = new PHPExcel();
    $PHPReader = new PHPExcel_Reader_Excel2007(); // 如果是.xlsx格式
    // 如果是.xls格式,使用 $PHPReader = new PHPExcel_Reader_Excel5();
    // 如果是.csv格式,使用 $PHPReader = new PHPExcel_Reader_CSV();
    if (!$PHPReader->canRead($fileTmpPath)) {
        die('无法读取Excel文件,请确保文件格式正确(.xlsx, .xls, .csv)。');
    }
    $PHPExcel = $PHPReader->load($fileTmpPath);
    $currentSheet = $PHPExcel->getSheet(0); // 读取第一个工作表
    // 获取总行数,注意第一行通常是标题,所以从第二行开始循环
    $allRow = $currentSheet->getHighestRow();
    $success_count = 0;
    $error_count = 0;
    // 循环读取每一行数据
    for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
        // 获取单元格数据 (根据你的Excel表结构调整列号)
        $typeid = $currentSheet->getCell('A' . $currentRow)->getValue(); // A栏是栏目ID
        $title = $currentSheet->getCell('B' . $currentRow)->getValue(); // B栏是标题
        $writer = $currentSheet->getCell('C' . $currentRow)->getValue(); // C栏是作者
        $source = $currentSheet->getCell('D' . $currentRow)->getValue(); // D栏是来源
        $tags = $currentSheet->getCell('E' . $currentRow)->getValue(); // E栏是标签
        $description = $currentSheet->getCell('F' . $currentRow)->getValue(); // F栏是摘要
        $body = $currentSheet->getCell('G' . $currentRow)->getValue(); // G栏是内容
        $litpic = $currentSheet->getCell('H' . $currentRow)->getValue(); // H栏是缩略图
        $pubdate = $currentSheet->getCell('I' . $currentRow)->getValue(); // I栏是发布时间
        // --- 数据验证 ---
        if (empty($typeid) || empty($title) || empty($body)) {
            echo "第 {$currentRow} 行数据不完整(栏目ID、标题、内容不能为空),已跳过。<br>";
            $error_count++;
            continue;
        }
        // --- 准备发布文章的数据 ---
        $arctitle = $title;
        $typeid = intval($typeid);
        $ismake = 1; // 是否生成静态页
        $channelid = 1; // 频道ID,1代表文章
        $senddate = !empty($pubdate) ? strtotime($pubdate) : time(); // 发布时间
        $mid = 1; // 发布者ID
        $description = empty($description) ? cn_substr(strip_tags($body), 200) : $description; // 如果摘要为空,则从内容中截取
        // 创建Dede文章发布类实例
        $arc = new Archives($typeid);
        $arc->GetArcInfo(); // 获取栏目信息
        // 设置文章属性
        $arc->Fields['arctitle'] = $arctitle;
        $arc->Fields['typeid'] = $typeid;
        $arc->Fields['channelid'] = $channelid;
        $arc->Fields['senddate'] = $senddate;
        $arc->Fields['mid'] = $mid;
        $arc->Fields['writer'] = $writer;
        $arc->Fields['source'] = $source;
        $arc->Fields['description'] = $description;
        $arc->Fields('tags') = $tags; // 设置标签
        $arc->Fields['litpic'] = $litpic; // 设置缩略图
        // 设置文章正文,注意:Dede对body字段有特殊处理
        $arc->Fields['body'] = $body;
        $arc->Fields['dutyadmin'] = $mid;
        // 保存文章
        if ($arc->Save()) {
            echo "成功发布文章: 《{$arctitle}》<br>";
            $success_count++;
        } else {
            echo "发布文章失败: 《{$arctitle}》<br>";
            $error_count++;
        }
    }
    echo "<hr><h2>导入完成!</h2>";
    echo "成功: {$success_count} 篇<br>";
    echo "失败: {$error_count} 篇";
} else {
    die('请选择一个有效的Excel文件。');
}

第4步:使用和测试

  1. upload_excel.phpprocess_excel.php 放在 dede/ 目录下。
  2. 访问 http://你的网站.com/dede/upload_excel.php
  3. 按照方案一的步骤准备Excel表格,然后上传。

重要注意事项和常见问题

  1. 栏目ID:务必确保Excel中的栏目ID是正确的,否则文章会发布到错误的栏目,甚至发布失败。
  2. 文件路径:缩略图和文章内容中的图片路径必须是服务器上存在的完整路径。
  3. 权限问题:这是最常见的失败原因,确保 data 目录、uploads 目录以及你上传脚本的目录有足够的写入权限(通常是 755)。
  4. 字符编码:确保你的Excel文件保存为UTF-8编码,并且在PHP脚本开头也声明了 header('Content-Type: text/html; charset=utf-8');,以避免中文乱码。
  5. 数据安全:在执行批量导入前,务必备份你的数据库!一旦出错,可以快速恢复。
  6. 特殊字符中如果包含一些特殊字符(如单引号),可能会导致SQL语句出错,如果遇到问题,可以考虑对数据进行转义处理。
  7. DedeCMS版本:不同版本的DedeCMS,其底层函数可能略有差异,如果脚本运行出错,请检查对应版本的函数文档。

希望这个详细的指南能帮助你成功实现DedeCMS的Excel批量发布功能!

-- 展开阅读全文 --
头像
织梦安装出现not found怎么办?
« 上一篇 今天
Metasploit C语言反弹如何实现?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]