PHP读取excel文档存入数据库

视图代码:

<form action="goods.php?act=excelfile" method="post" enctype="multipart/form-data" name="theForm">
        <span>上传记录xxxxx.csv文档</span>
        <input name="file" type="file" size="40">
        <input name="submit" type="submit"  />
        <input type="hidden" name="charset" value="GB2312">
</form>

控制器代码:

    $filename = $_FILES['file']['name'];
    //类型验证
    if (strpos($_FILES['file']['name'], 'csv') === false)
    {
        echo "请使用.csv文档";
        exit();
    }
    $field_list = array_keys(array(
        'goods_id'          => '',
        'jiegou'            => '',
        'caizhi'            => '',
        'fengge'            => '',
        'pinpai'            => '',
    )); // 字段列表

    $goods_list = get_data_list($field_list); //$goods_list就是所需数组,循环插入即可
function get_data_list($field_list)
{
    if (!$field_list) return array();
    /* 将文件按行读入数组,逐行进行解析 */
    $line_number = 0;
    $arr = array();
    $goods_list = array();
    $data = file($_FILES['file']['tmp_name']);

    foreach ($data AS $line)
    {
        // 跳过第一行
        if ($line_number == 0)
        {
            $line_number++;
            continue;
        }

        // 转换编码
        if (($_POST['charset'] != 'UTF8') && (strpos(strtolower(EC_CHARSET), 'utf') === 0))
        {
            $line = ecs_iconv($_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)
                {
                    if (!isset($field_list[count($arr)]))
                    {
                        continue;
                    }
                    $field_name = $field_list[count($arr)];
                    $arr[$field_name] = trim($buff);
                    $buff = '';
                    $quote = 0;
                }
                else
                {
                    $buff .= $char;
                }
            }
            else
            {
                $buff .= $char;
            }

            if ($i == $len - 1)
            {
                if (!isset($field_list[count($arr)]))
                {
                    continue;
                }
                $field_name = $field_list[count($arr)];
                $arr[$field_name] = trim($buff);
            }
        }
        $goods_list[] = $arr;
    }
    return $goods_list;
}