首页 > CMS > Ecshop > 正文

ecshop关于批量上传的修改

2024-07-09 22:56:18
字体:
来源:转载
供稿:网友
正在调试网店的批量上传功能,原批量上传功能是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
  1.     /* 将文件按行读入数组,逐行进行解析 */
  2.     $line_number = 0;
  3.     $goods_list = array();
  4.     $field_list = array_keys($_LANG['upload_goods']); // 字段列表
  5.     $data = file($_FILES['file']['tmp_name']);
  6.     foreach ($data AS $line)
  7.     {
  8.         // 跳过第一行
  9.         if ($line_number == 0)
  10.         {
  11.             $line_number++;
  12.             continue;
  13.         }
  14.         // 转换编码
  15.         if ($_POST['charset'] != 'UTF8')
  16.         {
  17.             $line = $iconv->convert($_POST['charset'], 'UTF8', $line);
  18.         }
  19.  
  20.         // 初始化
  21.         $arr    = array();
  22.         $buff   = '';
  23.         $quote  = 0;
  24.         $len    = strlen($line);
  25.         for ($i = 0; $i < $len; $i++)
  26.         {
  27.             $char = $line[$i];
  28.             if ('//' == $char)
  29.             {
  30.                 $i++;
  31.                 $char = $line[$i];
  32.                 switch ($char)
  33.                 {
  34.                     case '"':
  35.                         $buff .= '"';
  36.                         break;
  37.                     case '/'':
  38.                         $buff .= '/'';
  39.                         break;
  40.                     case ',';
  41.                         $buff .= ',';
  42.                         break;
  43.                     default:
  44.                         $buff .= '//' . $char;
  45.                         break;
  46.                 }
  47.             }
  48.             elseif ('"' == $char)
  49.             {
  50.                 if (0 == $quote)
  51.                 {
  52.                     $quote++;
  53.                 }
  54.                 else
  55.                 {
  56.                     $quote = 0;
  57.                 }
  58.             }
  59.             elseif (',' == $char)
  60.             {
  61.                 if (0 == $quote)
  62.                 {
  63.                     $field_name = $field_list[count($arr)];
  64.                     $arr[$field_name] = trim($buff);
  65.                     $buff = '';
  66.                     $quote = 0;
  67.                 }
  68.                 else
  69.                 {
  70.                     $buff .= $char;
  71.                 }
  72.             }
  73.             else
  74.             {
  75.                 $buff .= $char;
  76.             }
  77.             if ($i == $len - 1)
  78.             {
  79.                 $field_name = $field_list[count($arr)];
  80.                 $arr[$field_name] = trim($buff);
  81.             }
  82.         }
  83.         $goods_list[] = $arr;
  84.     }
 
更改为
  1.     /* 将Excel文件数据导入数据库 */
  2.   $line_number = 0;
  3.   $goods_list = array();
  4.   $field_list = array_keys($_LANG['upload_goods']); // 字段表
  5.   Read_Excel_File($_FILES['file']['tmp_name'],$data); // 将文件数据读入数组
  6.   foreach ($data[goods_list] AS $line) // $data[goods_list]  goods_list 为Excel工作表名
  7.   {
  8.       // 跳过第一行
  9.     if ($line_number == 0)
  10.         {
  11.             $line_number++;
  12.             continue;
  13.         }
  14.     
  15.     // 转换编码
  16.     if ($_POST['charset'] != 'UTF8')
  17.         {
  18.        foreach ($line AS $value)
  19.       {
  20.         $value = $iconv->convert($_POST['charset'], 'UTF8', $value);
  21.       }
  22.         }
  23.     
  24.     // 初始化
  25.     $arr = array();
  26.     foreach ($line AS $field)
  27.     {
  28.       $field_name = $field_list[count($arr)];
  29.      $arr[$field_name] = trim($field);
  30.     }
  31.     $goods_list[] = $arr;
  32.   }
 

注意:导入的Excel文件格式字段必须和官方的字段顺序和格式一样!
其中Excel的工作表名为:goods_list

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表