
thinkphp導(dǎo)入Excel去重
/*導(dǎo)入Excel有兩種可能
1.導(dǎo)入的Excel本身就有重復(fù)項
2.導(dǎo)入的Excel數(shù)據(jù)和已有的數(shù)據(jù)庫信息有重復(fù)項
解決思路:
1.先不管是否有重復(fù)項,直接導(dǎo)入到一張臨時表,然后經(jīng)過去重處理插入到一張新表(比較麻煩,數(shù)據(jù)處理過程多)
2.先獲取Excel的數(shù)據(jù),然后循環(huán)讀取數(shù)據(jù),在循環(huán)里把每條數(shù)據(jù)和數(shù)據(jù)庫里的數(shù)據(jù)進行對比,如果沒有就插入,
如果有就更新這條數(shù)據(jù)(導(dǎo)入過程中就處理數(shù)據(jù),過程簡單)
*/
//導(dǎo)入Excel
public function importExecl()
{
import('ORG.Net.UploadFile');
$upload=new UploadFile();// 實例化上傳類
$upload->allowExts=array('xls','xlsx');// 設(shè)置附件上傳類型
$upload->savePath='./Uploads/';// 設(shè)置附件上傳目錄
$upload->saveRule=date('Ymdhis');//設(shè)置附件上傳名稱
if(!$upload->upload()){// 上傳錯誤提示錯誤信息
$this->error($upload->getErrorMsg());
}else{//上傳成功 獲取上傳文件信息
$info=$upload->getUploadFileInfo();
}
$filetmpname='./Uploads/'.$info[0]['savename'];//獲取上傳的Excel的文件名
import('ORG.Util.PHPExcel');
$objPHPExcel = PHPExcel_IOFactory::load($filetmpname);
$sheetCount = $objPHPExcel->getSheetCount();
$excelarr=array();
$excelarr= $objPHPExcel->getSheet(0)->toArray();
$line_list=M("line_list");
for($i=1;$i<=count($excelarr);$i++) {
$data['type'] = $excelarr[$i][0];
$data['account_name'] = $excelarr[$i]1;
$data['clerk'] = $excelarr[$i][2];
$data['checkin_time'] = $excelarr[$i][3];
$data['client_name'] = $excelarr[$i][4];
$data['project'] = $excelarr[$i][5];
$data['capacity'] = $excelarr[$i][6];
$data['line_number'] = $excelarr[$i][7];
$data['monthly_amount'] = $excelarr[$i][8];
$data['open_time'] = $excelarr[$i][9];
$data['billing_time'] = $excelarr[$i][10];
$data['down_time'] = $excelarr[$i][11];
$data['invoice'] = $excelarr[$i][12];
$data['status'] = $excelarr[$i][13];
$data['remarks'] = $excelarr[$i][14];//上面的$date是讀取Excel的每條數(shù)據(jù)
$result = $line_list->where ("line_number='{$data['line_number']}'")->field('id,line_number')->find();
if (empty($result['line_number'])) {
$rs = $line_list->add ($data);//如果線路編號為空就添加這條數(shù)據(jù)
}else{
$rs=$line_list->where("id='{$result['id']}'")->save($data);//如果已有這條數(shù)據(jù)就更新這條數(shù)據(jù)
}
}
if($rs){
unlink($filetmpname);//這里是刪除上傳后的文件
$this->success("上傳成功","__URL__/index");
}else{
$this->error("上傳失敗","__URL__/index");
}
}
北京星誠視野網(wǎng)絡(luò)科技有限公司 © 2008-2022 京ICP備09003513-1號 技術(shù)支持:北京網(wǎng)站建設(shè)公司 北京APP開發(fā)