thinkphp导入Excel去重
生活随笔
收集整理的這篇文章主要介紹了
thinkphp导入Excel去重
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*導入Excel有兩種可能
1.導入的Excel本身就有重復項
2.導入的Excel數據和已有的數據庫信息有重復項
解決思路:
1.先不管是否有重復項,直接導入到一張臨時表,然后經過去重處理插入到一張新表(比較麻煩,數據處理過程多)
2.先獲取Excel的數據,然后循環讀取數據,在循環里把每條數據和數據庫里的數據進行對比,如果沒有就插入,
如果有就更新這條數據(導入過程中就處理數據,過程簡單)
*/
//導入Excel
public function importExecl()
{
import('ORG.Net.UploadFile');
$upload=new UploadFile();// 實例化上傳類
$upload->allowExts=array('xls','xlsx');// 設置附件上傳類型
$upload->savePath='./Uploads/';// 設置附件上傳目錄
$upload->saveRule=date('Ymdhis');//設置附件上傳名稱
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的每條數據
$result = $line_list->where ("line_number='{$data['line_number']}'")->field('id,line_number')->find();
if (empty($result['line_number'])) {
$rs = $line_list->add ($data);//如果線路編號為空就添加這條數據
}else{
$rs=$line_list->where("id='{$result['id']}'")->save($data);//如果已有這條數據就更新這條數據
}
}
if($rs){
unlink($filetmpname);//這里是刪除上傳后的文件
$this->success("上傳成功","__URL__/index");
}else{
$this->error("上傳失敗","__URL__/index");
}
}
總結
以上是生活随笔為你收集整理的thinkphp导入Excel去重的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cisco IP 电话 将它的voice
- 下一篇: HTML5 svg 模糊,html5 –