博客列表 >2018-1-23

2018-1-23

随笔肆
随笔肆原创
2018年01月23日 10:50:18580浏览

excel导出是早就做好了的,当时没有记录来源。现在在做短信群发,要用的excel导入就一起记在日记了。

/* 导出excel
* $expTitle 标题前缀 $expCellName 字段 $expTableData 数据 $condition 条件说明
*/
public function exportExcel($expTitle,$expCellName,$expTableData,$condition)
{
    $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
    $fileName = $xlsTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
    $cellNum = count($expCellName);
    $dataNum = count($expTableData);
    vendor("PHPExcel.PHPExcel");//引入phpexcel
    $objPHPExcel = new PHPExcel(); //实例化
    $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N');
    $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1',$condition.'mobile时间:'.date('Y-m-dH:i:s'));
    for($i=0;$i<$cellNum;$i++){
      $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);
    }
    for($i=0;$i<$dataNum;$i++){
      for($j=0;$j<$cellNum;$j++){
       $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3),$expTableData[$i][$expCellName[$j][0]]);
      }
    }
    header('pragma:public');
    header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
    header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印 inline本窗口
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
    exit;
}
/*调用*/
public function export($xlsData){
        $xlsName  ='xy';      
        $xlsCell  = array(
            array('name','姓名'),
			array('phone','手机号'),
			array('city','城市'),
			array('address','详细地址'),
			array('time','报名时间')
        );
	$xlscondition="";
        $this->exportExcel($xlsName,$xlsCell,$xlsData,$xlscondition);
    }
/* 导入 excel*/
public function importExcel($file,$sheet=0)
{
    vendor("PHPExcel.PHPExcel");//引入phpexcel
    $PHPExcel = new PHPExcel();     
    $PHPReader = new PHPExcel_Reader_Excel2007(); 
    if(!$PHPReader->canRead($file)){
        $PHPReader = new PHPExcel_Reader_Excel5();
        if(!$PHPReader->canRead($file)){
            echo 'no Excel';
            return ;
        }
    }
    $PHPExcel = $PHPReader->load($file);//建立excel对象
    $currentSheet = $PHPExcel->getSheet($sheet);//读取指定sheet表
    $allColumn = $currentSheet->getHighestColumn();//取得最大的序号
    $allRow = $currentSheet->getHighestRow();//一共有多少行
    $data=array();
    for($currentRow = 1; $currentRow<=$allRow; $currentRow++){
       for($currentColumn='A'; $currentColumn<=$allColumn; $currentColumn++){   
            $address = $currentColumn.$currentRow;   
            $date[]= $currentSheet->getCell($address)->getValue();   
       }
    } 
    return $date;
}
/*上传调用*/
if ($_FILES["file"]["error"] > 0){
    $this->error("Error: " . $_FILES["file"]["error"]);
}else{
    $excaldata=$this->importExcel($_FILES["file"]["tmp_name"]);	//临时存储地址
}

版本tp3.1,php5.2.17,IIS6,在 new PHPExcel(); 时报错, 加入反斜杠 new \PHPExcel();后显示正常。目前不知具体报错原因。

本次导入excel是用于短信群发,另尝试了一下直接从textarea输入手机号,以换行符为分隔符。但数组的值也可能因输入不当存在空格。

$mobile_list = trim($_POST['mobile']);
$mobile_arr = explode("\r\n", $mobile_list );


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议