PHPExcel+Thinkphp3.2 的一个简单实例

<?php
namespace Home\Controller;
use Think\Controller;
use Vendor\phpExcel;
class IndexController extends Controller {
    
    public function index()
    {
    	$fileName="yc";
    	$this->out($fileName);
    }

    /**
    * 读取Excel文件
    */
    public function ReadExcel($fileName)
    {
    	//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
		import("Org.Util.PHPExcel");
		import("Org.Util.PHPExcel.Reader.Excel5");    //

		$objPhpExcel = new \PHPExcel();
		//实例化PHP_Reader_Excel5 
		$PHPReader=new \PHPExcel_Reader_Excel5();
		//载入文件
		$PHPExcel=$PHPReader->load($fileName);
		//获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
		$currentSheet=$PHPExcel->getSheet(0);
		//获取总列数
		$allColumn=$currentSheet->getHighestColumn();
		//获取总行数
		$allRow=$currentSheet->getHighestRow();
		//循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
		for($currentRow=1;$currentRow<=$allRow;$currentRow++){
			//从哪列开始,A表示第一列
			for($currentColumn='A';$currentColumn<=$allColumn;$currentColumn++){
				//数据坐标
				$address=$currentColumn.$currentRow;
				//读取到的数据,保存到数组$arr中
				$arr[$currentRow][$currentColumn]=$currentSheet->getCell($address)->getValue();
			}
		
		}
		//输出到浏览器(测试)
		dump($arr);
    }

    /**
    * 生成的Filename为Excel文件名前缀
    */
   	public function out($fileName){
		$data = array(
			        array('username'=>'zhangsan','password'=>"123456"),
			        array('username'=>'lisi','password'=>"abcdefg"),
		            array('username'=>'wangwu','password'=>"111111"),
		        );
		//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能import导入
		import("Org.Util.PHPExcel");
		import("Org.Util.PHPExcel.Writer.Excel5");
		import("Org.Util.PHPExcel.IOFactory.php");

		$headArr=array("用户名","密码");  //标题头
		//生成Excel文件
		$this->generalExcel($fileName,$headArr,$data);
	}

	/**
	*/
	private	function generalExcel($fileName,$headArr,$data){
		//对数据进行检验
	    if(empty($data) || !is_array($data)){
	        die("data must be a array");
	    }
	    //检查文件名
	    if(empty($fileName)){
	        exit;
	    }
	    $date = date("Ymd",time());
	    //拼接文件名格式:文件名_yyyymmdd.xls 
	    $fileName .= "_{$date}.xls";

		//创建PHPExcel对象,注意,不能少了\
	    $objPHPExcel = new \PHPExcel();
	    $objProps = $objPHPExcel->getProperties();
		
	    //设置表头
	    $key = ord("A");
	    foreach($headArr as $v){
	        $colum = chr($key);
	        $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);
	        $key += 1;
	    }
	    
	    $row = 3;  //写入数据起始行 
	    $objActSheet = $objPHPExcel->getActiveSheet();
	    //行写入
	    foreach($data as $key => $rows){ 
	        $span = ord("A");
	        // 列写入
	        foreach($rows as $keyName=>$value){
	            $j = chr($span);
	            $objActSheet->setCellValue($j.$row, $value);
	            $span++;
	        }
	        $row++;
    	}
	    // $fileName = iconv("utf-8", "utf-8", $fileName);
	    //重命名Sheet名称
	   	$objPHPExcel->getActiveSheet()->setTitle('YANGC');
	    //设置活动单指数到第一个表,所以Excel打开这是第一个表
	    $objPHPExcel->setActiveSheetIndex(0);
	    header('Content-Type: application/vnd.ms-excel');
		header("Content-Disposition: attachment;filename=$fileName");
		header('Cache-Control: max-age=0');
	  
	  	$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
	    $objWriter->save('php://output'); //文件通过浏览器下载
	    exit;
	}



}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值