博主信息
博文 4
粉丝 0
评论 0
访问量 2898
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
2018-1-23
随笔肆
原创
698人浏览过

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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学