正在调试网店的批量上传功能,原批量上传功能是CSV文件格式的导入,在使用过程发现很多问题,如导入字段不全等。不知道大家有没有遇到过。现将原CSV改为Excel XLS文件格式导入 具体
正在调试网店的批量上传功能,原批量上传功能是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、加入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
- /* 将文件按行读入数组,逐行进行解析 */
- $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;
- }
- /* 将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;
- }
注意:导入的Excel文件格式字段必须和官方的字段顺序和格式一样!
其中Excel的工作表名为:goods_list
转载请说明出处
知优网 » ecshop关于批量上传的修改(ecshop批量上传商品)
知优网 » ecshop关于批量上传的修改(ecshop批量上传商品)