UTF8格式指上传格式不对
ECSHOP 默认的是 UTF8 的格式, 所以如果
批量上的文件是
CSV格式的 ,且用EXCEL编辑的,那就一定不会是UTF8格式的了。因为ECXCL跟本就不支持UTF8格式。。
但是如果把
CSV另保存为 TXT格式,再将TXT另存为 UTF8格式的TXT文件,那在
批量上传的时候 就会出现问题: 所有的列全都传到第一列去了就! (我想可能是 因为 分隔符不一样的关系,
CSV是 逗号 分隔符,保存后的TXT文件全都是 TAB 分隔符 。 不知道应怎么解决?
[
本帖最后由 hoverlee 于 2007-8-21 09:58 编辑 ]

附件
2007-8-21 09:56
11111.gif (9.64 KB)
http://bbs.ecshop.com/viewthread.php?tid=31540&highlight=csv%2B%C5%FA%C1%BF
-----------------------------------------------------------------------------------------------------------------------------------------------
关于批量上传的修改
正在调试网店的
批量上传功能,原
批量上传功能是
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
[Copy to clipboard] [ - ]
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;
}
更改为
[Copy to clipboard] [ - ]
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;
}
注意:导入的Excel文件格式字段必须和官方的字段顺序和格式一样!
其中Excel的工作表名为:goods_list

附件
2007-7-5 14:13
下载次数: 21
goods_batch.rar (11.46 KB)
http://bbs.ecshop.com/viewthread.php?tid=29773&highlight=csv%2B%C5%FA%C1%BF