1、需要下載PHPExcel文件
public function upload()
{
header("Content-Type:text/html;charset=utf-8");
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728 ;// 設置附件上傳大小
$upload->exts = array('xls', 'xlsx');// 設置附件上傳類
$upload->savePath = '/'; // 設置附件上傳目錄
// 上傳文件
$info = $upload->uploadOne($_FILES['mypic']);
$filename = './Uploads'.$info['savepath'].$info['savename'];
$exts = $info['ext'];
if ($exts != "xls" && $exts != "xlsx") {
//echo '文件格式不對!';
//exit;
}
if(!$info) {// 上傳錯誤提示錯誤信息
die(json_encode(array("result"=>0)));
// $this->error($upload->getError());
}else{// 上傳成功調用導入的方法
$this->import($filename, $exts);
}
}
//時間轉換類
public function GetData($val){
$n = intval(($val - 25569) * 3600 * 24); //轉換成1970年以來的秒數
$gregorian=gmdate('Y-m-d H:i:s', $n);//格式化時間
return $gregorian;
}
//導入數據方法
protected function import($filename, $exts)
{
//導入PHPExcel類庫,因爲PHPExcel沒有用命名空間,只能inport導入
import("Org.Util.PHPExcel");
//創建PHPExcel對象,注意,不能少了\
$PHPExcel=new \PHPExcel();
//如果excel文件後綴名爲.xls,導入這個類
if($exts == 'xls'){
import("Org.Util.PHPExcel.Reader.Excel5");
$PHPReader=new \PHPExcel_Reader_Excel5();
}else if($exts == 'xlsx'){
import("Org.Util.PHPExcel.Reader.Excel2007");
$PHPReader=new \PHPExcel_Reader_Excel2007();
}
$data=array();
$data_sum=array();
//載入文件
$PHPExcel=$PHPReader->load($filename);
//獲取表中的第一個工作表,如果要獲取第二個,把0改爲1,依次類推
$currentSheet=$PHPExcel->getSheet(0);
//獲取總列數
$allColumn=$currentSheet->getHighestColumn();
//獲取總行數
$allRow=$currentSheet->getHighestRow();
//循環獲取表中的數據,$currentRow表示當前行,從哪行開始讀取數據,索引值從0開始
for($currentRow=2;$currentRow<=$allRow;$currentRow++){
//從哪列開始,A表示第一列
for($currentColumn='A';$currentColumn<=$allColumn;$currentColumn++){
//數據座標
$address=$currentColumn.$currentRow;
//讀取到的數據,保存到數組$arr中
$cell =$currentSheet->getCell($address)->getValue();
if($cell instanceof PHPExcel_RichText){
$cell = $cell->__toString();
}
$data[$currentColumn]=$cell;
if('H'==$currentColumn)
{
$data[$currentColumn]=$this->GetData($data[$currentColumn]);
}else if('F'==$currentColumn){
if("到件"==$data[$currentColumn])
{
$data[$currentColumn]=1;
}else if("分發"==$data[$currentColumn])
{
$data[$currentColumn]=2;
}else if("簽收"==$data[$currentColumn])
{
$data[$currentColumn]=3;
}else if("異常"==$data[$currentColumn])
{
$data[$currentColumn]=4;
}
}
}
$data_sum[$currentRow]=$data;
}
$this->save_import($data_sum);
}
//保存導入數據
public function save_import($data){
$map=M('user');
$map->startTrans();
$cout=count($data,0);
$success=0;
$error=0;
foreach($data as $k=>$v){
//echo $v['A'].'end...+';
if($v["A"]){
$list = $map->where("name='".$v['A']."' and education= '".$v['F']."' and birth='".$v['C']."'")->select();
if(!$list){
if($v['B']=='男'){
if($map->data($v)->add(array('name'=>$v['A'],'sex'=>0,'birth'=>$v['C'],'nation'=>$v['D'],'is_party_person'=>$v['E'],'education'=>$v['F'],'school'=>$v['G'],'join_data'=>$v['H'],'branch_id'=>$v['J'],'group_id'=>$v['K'],'identity'=>$v['I']))){
$success++;
}else {
$error++;
}
}else{
if($map->data($v)->add(array('name'=>$v['A'],'sex'=>1,'birth'=>$v['C'],'nation'=>$v['D'],'is_party_person'=>$v['E'],'education'=>$v['F'],'school'=>$v['G'],'join_data'=>$v['H'],'branch_id'=>$v['J'],'group_id'=>$v['K'],'identity'=>$v['I']))){
$success++;
}else {
$error++;
}
}
}
}
}
if($success){
die(json_encode(array('result'=>1)));
// $this->success('導入成功', U('Manage/orgConstruction'));
}else{
die(json_encode(array('result'=>2)));
// $this->error('導入失敗', U('Manage/orgConstruction'));
}
}