異なる中国語に従って対応するフィールドを照合するための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;
}
//这是处理的结束《=======================================
········
}