ECShop 网上商店系统支持论坛's Archiver

xushuyi 发表于 2007-7-5 14:13

关于批量上传的修改

正在调试网店的批量上传功能,原批量上传功能是CSV文件格式的导入,在使用过程发现很多问题,如导入字段不全等。不知道大家有没有遇到过。现将原CSV改为Excel  XLS文件格式导入。

具体修改如下:

1、加入lib_excel.php类库文件
将lib_excel.php拷贝入[商店根目录]/admin/includes   目录下
2、修改 [商店根目录]/admin/goods_batch.php 文件
行号 20 require('includes/init.php');
加入require('includes/lib_excel.php');

以下是原代码
行号 79-166[code]    /* 将文件按行读入数组,逐行进行解析 */
    $line_number = 0;
    $goods_list = array();
    $field_list = array_keys($_LANG['upload_goods']); // 字段列表
    $data = file($_FILES['file']['tmp_name']);
    foreach ($data AS $line)
    {
        // 跳过第一行
        if ($line_number == 0)
        {
            $line_number++;
            continue;
        }
        // 转换编码
        if ($_POST['charset'] != 'UTF8')
        {
            $line = $iconv->convert($_POST['charset'], 'UTF8', $line);
        }

        // 初始化
        $arr    = array();
        $buff   = '';
        $quote  = 0;
        $len    = strlen($line);
        for ($i = 0; $i < $len; $i++)
        {
            $char = $line[$i];
            if ('\\' == $char)
            {
                $i++;
                $char = $line[$i];
                switch ($char)
                {
                    case '"':
                        $buff .= '"';
                        break;
                    case '\'':
                        $buff .= '\'';
                        break;
                    case ',';
                        $buff .= ',';
                        break;
                    default:
                        $buff .= '\\' . $char;
                        break;
                }
            }
            elseif ('"' == $char)
            {
                if (0 == $quote)
                {
                    $quote++;
                }
                else
                {
                    $quote = 0;
                }
            }
            elseif (',' == $char)
            {
                if (0 == $quote)
                {
                    $field_name = $field_list[count($arr)];
                    $arr[$field_name] = trim($buff);
                    $buff = '';
                    $quote = 0;
                }
                else
                {
                    $buff .= $char;
                }
            }
            else
            {
                $buff .= $char;
            }
            if ($i == $len - 1)
            {
                $field_name = $field_list[count($arr)];
                $arr[$field_name] = trim($buff);
            }
        }
        $goods_list[] = $arr;
    }[/code]更改为[code]    /* 将Excel文件数据导入数据库 */
  $line_number = 0;
  $goods_list = array();
  $field_list = array_keys($_LANG['upload_goods']); // 字段表
  Read_Excel_File($_FILES['file']['tmp_name'],$data); // 将文件数据读入数组
  foreach ($data[goods_list] AS $line) // $data[goods_list]  goods_list 为Excel工作表名
  {
      // 跳过第一行
    if ($line_number == 0)
        {
            $line_number++;
            continue;
        }
   
    // 转换编码
    if ($_POST['charset'] != 'UTF8')
        {
       foreach ($line AS $value)
      {
        $value = $iconv->convert($_POST['charset'], 'UTF8', $value);
      }
        }
   
    // 初始化
    $arr = array();
    foreach ($line AS $field)
    {
      $field_name = $field_list[count($arr)];
     $arr[$field_name] = trim($field);
    }
    $goods_list[] = $arr;
  }[/code][size=4][color=red]注意:导入的Excel文件格式字段必须和官方的字段顺序和格式一样![/color][/size]
[size=4][color=red]其中Excel的工作表名为:goods_list[/color][/size]
[size=4][color=#ff0000][/color][/size]

[[i] 本帖最后由 xushuyi 于 2007-10-12 13:28 编辑 [/i]]

luckypcl 发表于 2007-7-10 00:58

正好操作到这部分,虽然还没看太明白,但是慢慢研究!!!谢谢!!

luckypcl 发表于 2007-7-10 10:31

2、修改 [商店根目录]/admin/goods_batch.php 文件
行号 20 require('includes/init.php');
加入require('includes/lib_excel.php');



请问这个代码require('includes/lib_excel.php');是替代 require('includes/init.php');这个?还是直接加在这个后面,怎么我的总是出现错误!!!急!!!

xushuyi 发表于 2007-7-10 16:30

是在后面“加入”

zhhsys 发表于 2007-9-16 14:23

:D 楼主果然厉害

牙齿晒月亮 发表于 2007-10-8 14:14

图片怎么直接批量导入阿

mango117 发表于 2007-10-12 08:54

请问楼主或其他朋友可以帮忙上传一份附件吗,现在附件下载不了了~
多谢了!:$

rogerhwan 发表于 2007-10-16 23:28

ECSHOPv2.1.5-批量上传补丁.rar (15.43 KB) 與 goods_batch.rar (11.46 KB)  有一樣嗎??:L :L

longyang 发表于 2007-10-24 16:32

Excel  XLS文件格式导入,上传了补订,怎么还是报错啊!以前试的时候就可以,现在用以前的文件传上去也不行,麻烦帮忙看看吧!

longyang 发表于 2007-10-24 16:33

[img]http://www.yuelou.com/888.jpg[/img]

xushuyi 发表于 2007-12-4 09:13

我在2.5下修改后发现经处理后的数据为负数,lib_excel.php不适合了,目前只能在本机环境下测试通过。

2.5修改后的新补丁已经有朋友测试通过了。

[[i] 本帖最后由 xushuyi 于 2007-12-7 10:56 编辑 [/i]]

yingouqlj 发表于 2007-12-5 01:10

感谢   顶了

yingouqlj 发表于 2007-12-5 01:10

喜欢 DEDE 那样的上传方式 转载很方便

学无止境 发表于 2008-3-22 14:42

菜菜求助

什么是根目录
什么是上传到空间
用什么上传!!!???

linwy 发表于 2008-3-29 11:48

刚装完2.15的程序,批量上传有出错,如下:
Warning: opendir(../languages): failed to open dir: Permission denied in /usr/vhome/g/a/m/gamedoll.cn/www/admin/goods_batch.php on line 37

能指点下吗 ??

roger0603 发表于 2008-3-31 20:45

终于找到,今天晚上一定要研究通。。。:lol :lol

iapex 发表于 2008-4-2 17:13

让我好找啊!!!!

xushuyi 发表于 2008-7-4 11:37

用工具上传

ut2008ut 发表于 2008-7-5 23:21

如何在商品相册里多传几张相片?

批量上传后,只有一张图片,而单传,在商品相册里可以传多几张相片?

如何做到批量上传的时候,商品相册里多传几张图片?

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.