異なる中国語に従って対応するフィールドを照合するためのphpExcelインポート処理メソッド

異なる中国語に従って対応するフィールドを照合するためのphpExcelインポート処理メソッド

さらに騒ぎなく、ハードコアに直接行きます

まず、フィールドテーブルのフィールドと名前を取り出し、名前(中国語)をキーとして配列keyArrayに保存し、フィールド(フィールド)を値としてvalueMapに保存します。テーブルの中国語タイトル行を取得し、取得したテーブル本体の内容を保存します。中国の行を含め、破棄されます。sheetDataで2つのサイクルが実行されます。2番目の行は処理される行で、2番目のサイクルのキーが配列keyArrayにあるかどうかを判断します。判断する必要があります。たとえば、リストの最初の列がいくつかあります。つまり、[A]には「statistics」、「total」、「mean」などの単語が含まれています。[A]にこれらの単語がないかどうかを判断するためにデータテーブルに挿入する必要はありません。 array_columnは、値(フィールド)をキーとして、テーブルの各行の値を値としてアセンブルされ、テーブルに挿入されます。

以下は、コードの重要な部分を見ることができます

//これは処理の始まりです====================== "
重要なコンテンツ
///これは処理の終わりです" ========== ===============
印刷された変数もコードに保持されます。理解できない場合は、コメントを手放して、ステップごとに各ステ​​ップの結果を確認できます。

function excelImport2($post, $model, $model_field, $title_row)
{
    $m_leads = D($model);
    $shop_data = getShopInfo();
    $tyep_data = getTypeInfo();
    $types = getTypeData();

    if (isset($_FILES['excel']['size']) && $_FILES['excel']['size'] != null) {
        import('@.ORG.UploadFile');
        $upload = new UploadFile();
        $upload->maxSize = 20000000;
        $upload->allowExts = array('xls');
        $dirname = UPLOAD_PATH . date('Ym', time()) . '/' . date('d', time()) . '/';
        if (!is_dir($dirname) && !mkdir($dirname, 0777, true)) {
            alert('error', L('ATTACHMENTS TO UPLOAD DIRECTORY CANNOT WRITE'), $_SERVER['HTTP_REFERER']);
        }
        $upload->savePath = $dirname;
        if (!$upload->upload()) {
            alert('error', $upload->getErrorMsg(), $_SERVER['HTTP_REFERER']);
        } else {
            $info = $upload->getUploadFileInfo();
        }
    }

    if (is_array($info[0]) && !empty($info[0])) {
        $savePath = $dirname . $info[0]['savename'];
    } else {
        alert('error', L('UPLOAD FAILED'), $_SERVER['HTTP_REFERER']);
    };
    import("ORG.PHPExcel.PHPExcel");
    $PHPExcel = new PHPExcel();
    $PHPReader = new PHPExcel_Reader_Excel2007();
    if (!$PHPReader->canRead($savePath)) {
        $PHPReader = new PHPExcel_Reader_Excel5();
    }
    $PHPExcel = $PHPReader->load($savePath);
    $currentSheet = $PHPExcel->getSheet(0);
    $allRow = $currentSheet->getHighestRow();
    $highestColumn = $currentSheet->getHighestColumn();//how many columns
    $allColumn = PHPExcel_Cell::columnIndexFromString($highestColumn);

    $sheetData = $PHPExcel->getActiveSheet()->toArray(null, false, false, true);
    //删除导入的文件
    unlink($savePath);
//dump($sheetData);exit;
    $where2 = $keyArray = [];
    $where2['model'] = $model_field;
    //这是处理的开始======================》
    $field_list = M('NewFields')->where($where2)->order('order_id')->select();

    $modelData = array_column($field_list, 'field', 'name');
    if (isset($sheetData[$title_row])) {
        foreach ($sheetData[$title_row] as $key => $value) {
            if (isset($modelData[$value])) {
                $keyArray[] = $key;
                $valueMap[$modelData[$value]] = '';
            }
        }
    }
//    dump($keyArray);
//    dump($valueMap);exit;
    for ($i = 1; $i <= $title_row; $i++) {
        unset($sheetData[$i]);
    }
    $newData = [];
//    dump($sheetData);exit;
    foreach ($sheetData as $key => $value) {
        foreach ($value as $k => $v) {
            if (!in_array($k, $keyArray)) {
                unset($value[$k]);
            }
        }
        if (!($value['A'] == '总计') && !($value['A'] == '汇总') && !($value['A'] == '均值')) {
            $newData[] = array_combine(array_keys($valueMap), array_values($value));
        }
//            var_dump(array_keys($valueMap));
//            echo '-';
//            var_dump(array_values($value));
//            exit;
    }
//这是处理的结束《=======================================
    ········
    }
オリジナル記事を公開 Likes0 Visits0

おすすめ

転載: blog.csdn.net/weixin_43928139/article/details/105563343
おすすめ