PHPExcel 详解 - Go语言中文社区

PHPExcel 详解


下载PHPExcel插件
慕课网学习

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

PHPExcel 生成Excel文件

方法一

<?php

require_once dirname(__FILE__)."/Classes/PHPExcel.php";
//1.创建Excel文件(实例化Excel类)
$excel = new PHPExcel();

//2.指定当前的sheet
$excel->setActiveSheetIndex(0)
                      ->setCellValue('A1', 'Hello');//3.设置值

//4.保存文件  文件格式 Excel2007
$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$objWriter->save("simple_excel.xlsx");

方法二

<?php
    header("Content-Type: text/html;charset=utf-8");
    $dir = dirname(__FILE__);//找到当前脚本所在路径
	require_once $dir."/PHPExcel.php"; //引入文件
	$obj = new PHPExcel();// 实例化PHPExcel类,等价于在桌面上新建一个excel表格
	$objSheet = $obj->getActiveSheet(); //获得当前活动sheet的操作对象
	$objSheet->setTitle('demo'); //给当前活动sheet设置名称
    //方法1
	$objSheet->setCellValue("A1","姓名")->setCellValue("B1","分数"); //给当前活动sheet填充数据
	$objSheet->setCellValue("A2","张三")->setCellValue("B2","50");
	$objWriter = PHPExcel_IOFactory::createWriter($obj,"Excel2007"); //按照指定格式生成excel文件
	$objWriter->save($dir."/demo.xlsx");  //保存文件

在这里插入图片描述

方法三

 header("Content-Type: text/html;charset=utf-8");
    $dir = dirname(__FILE__);//找到当前脚本所在路径
	require_once $dir."/PHPExcel.php"; //引入文件
	$obj = new PHPExcel();// 实例化PHPExcel类,等价于在桌面上新建一个excel表格
	$objSheet = $obj->getActiveSheet(); //获得当前活动sheet的操作对象
	$objSheet->setTitle('demo'); //给当前活动sheet设置名称
 
	//方法二
	$array = array(
		 		array(),
				array("","姓名","分数"),
				array("","李四","60"),
				array("","王五","100")
		      );
	$objSheet->fromArray($array); //直接加载数据块来填充数据
	$objWriter = PHPExcel_IOFactory::createWriter($obj,"Excel2007");
	$objWriter->save($dir."/demo_1.xlsx");

在这里插入图片描述
推荐第二种方法

PHPExcel 将数据库表中的数据导出为Excel文件

方法一

在这里插入图片描述

在这里插入图片描述
dbconfig.php

<?php
   	$phpexcel = array(
   			'host' => "127.0.0.1",
   			'username' => "root",
   			'password' => "",
   			'database' => "phpexcel",
   			'charset'  => "utf8"
   		);

db.php

<?php
	require_once dirname(__FILE__)."/dbconfig.php"; //引入配置文件
 
	class db {
		public $conn = null;
        //构造方法 实例化类时自动调用
		public function __construct($config){
			$this->conn = mysqli_connect($config['host'],$config['username'],$config['password'],$config['database']) or die(mysqli_connect_error()); //连接数据库
			mysqli_query($this->conn, "set names ".$config['charset']) or die(mysqli_connect_error());//设定mysql编码
		}
 
		//根据传入sql语句 查询mysql结果集
		public function getResult($sql){
			$resource = mysqli_query($this->conn,$sql) or die(mysqli_connect_error());//查询sql语句
			$res = array();
			while($row = mysqli_fetch_assoc($resource)){
				$res[] = $row;
			}
			return $res;
		}
 
		//根据传入年级数 查询每个年级的学生数据
		public function getDataByGrade($grade){
			$sql = "select username,score,class from user where grade=".$grade." order by score desc";
			$res = self::getResult($sql);
			return $res;
		}
	}
?>

export.php

<?php
	$dir = dirname(__FILE__); //查找当前脚本所在路径
	require_once $dir."/db.php";//引入mysql操作类文件
	require_once $dir."/PHPExcel.php";//引入PHPExcel文件
	$db = new db($phpexcel); //实例化db类 连接数据库
	$objPHPExcel = new PHPExcel(); //实例化PHPExcel类,等同于在桌面上新建一个excel
	for( $i = 1; $i <= 3; $i++ ){
		if($i > 1){
			$objPHPExcel->createSheet();//创建新的内置表
		}
		$objPHPExcel->setActiveSheetIndex( $i - 1 ); //把新创建的sheet设定为当前活动sheet
		$objSheet = $objPHPExcel->getActiveSheet(); //获取当前活动sheet
        $objSheet->setTitle($i."年级"); //给当前活动sheet起个名字
		$data = $db->getDataByGrade($i); //查询每个年级的学生数据
		$objSheet->setCellValue("A1","姓名")->setCellValue("B1","分数")->setCellValue("C1","班级");//填充数据
		$j = 2;
		foreach($data as $key =>$value ){
			$objSheet->setCellValue("A".$j,$value['username'])->setCellValue("B".$j,$value['score'])->setCellValue("C".$j,$value['class']."班");
			$j++;
		}
 }
		$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); //生成excel文件
		$objWriter->save($dir."/export_1.xls");//保存文件
	
 
?>

在这里插入图片描述

方法二

<?php
$dir = dirname(dirname(__FILE__));
require_once $dir."/Classes/PHPExcel.php";
//将数据库表中的内容,读取出来
$pdo = new PDO("mysql:host=localhost;dbname=excels","root","");

$statm = $pdo->prepare("select * from goods");

$statm->execute();

$result = $statm->fetchAll(PDO::FETCH_ASSOC);

$excelObj = new PHPExcel();

//2.选择当前工作的Sheet
$sheetObj = $excelObj->setActiveSheetIndex(0);

//3.在指定的位置中写入数据
$sheetObj->setCellValue('A1','ID');
$sheetObj->setCellValue('B1','商品名称');
$sheetObj->setCellValue('C1','价格');
$sheetObj->setCellValue('D1','库存');

//将数据库表中的数据导出到Excel中
$i = 2; //用于指定Excel文件的行信息
foreach($result as $value){
    $j = 0; //用于指定Excel文件的列信息
    foreach($value as $v){
        //确定Excel文件中写入元素的具体位置
        $cellName = getColName($j).$i;
        $sheetObj->setCellValue($cellName,$v);
        $j++;
    }
    $i++;
}


function getColName($j){
    //$col = array('A','B',....'Z');
    $col = range('A','Z');
    return $col[$j];
}



//4.保存Excel文件

$objWriter = PHPExcel_IOFactory::createWriter($excelObj,'Excel2007');
//告诉浏览器以xlsx文件输出
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
//Content-Disposition 消息头指示输出内容该以何种形式展示,
// attachment:消息体应该被下载到本地
//filename的值预填为下载后的文件名
header('Content-Disposition: attachment;filename="goods.xlsx"');
//设置缓存存储的最大周期,超过这个时间缓存被认为过期(单位秒),
//max-age=0 即不缓存
header('Cache-Control: max-age=0');
$objWriter->save('php://output'); //是一个只写流,允许您以与var_dump和echo相同的方式写入输出缓冲区机制
<?php


//将数据库表中的内容,读取出来
$pdo = new PDO("mysql:host=localhost;dbname=excels","root","");

$statm = $pdo->prepare("select * from goods");

$statm->execute();

$result = $statm->fetchAll(PDO::FETCH_ASSOC);

?>
<table width="500" border="1">
    <tr><th>ID</th><th>商品名称</th><th>价格</th><th>库存</th></tr>
        <?php
               foreach ($result as $value) {
        ?>
        <tr>
            <td><?php echo $value['id']; ?></td>
            <td><?php echo $value['name']; ?></td>
            <td><?php echo $value['price']; ?></td>
            <td><?php echo $value['count']; ?></td>
        </tr>
        <?php
             }
        ?>
    <tr><td colspan="4"><input type="button" value="另存为Excel" onclick="exportExcel('goods')" /> </td></tr>
</table>
<script>
    function exportExcel(tbname){
        location.href = "export_excel.php?tbname="+tbname;
    }
</script>

PHPExcel将浏览器中的内容导出为Excel

方法一

export.php

<?php
	$dir = dirname(__FILE__); //查找当前脚本所在路径
	require_once $dir."/db.php";//引入mysql操作类文件
	require_once $dir."/PHPExcel.php";//引入PHPExcel文件
	$db = new db($phpexcel); //实例化db类 连接数据库
	$objPHPExcel = new PHPExcel(); //实例化PHPExcel类,等同于在桌面上新建一个excel
	for( $i = 1; $i <= 3; $i++ ){
		if($i > 1){
			$objPHPExcel->createSheet();//创建新的内置表
		}
		$objPHPExcel->setActiveSheetIndex( $i - 1 ); //把新创建的sheet设定为当前活动sheet
		$objSheet = $objPHPExcel->getActiveSheet(); //获取当前活动sheet
		$objSheet->setTitle($i."年级");
		$data = $db->getDataByGrade($i); //查询每个年级的学生数据
		$objSheet->setCellValue("A1","姓名")->setCellValue("B1","分数")->setCellValue("C1","班级");//填充数据
		$j = 2;
		foreach($data as $key =>$value ){
			$objSheet->setCellValue("A".$j,$value['username'])->setCellValue("B".$j,$value['score'])->setCellValue("C".$j,$value['class']."班");
			$j++;
		}
	}
		$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); //生成excel文件
		//$objWriter->save($dir."/export_1.xls");//保存文件
		browser_export('Excel5','browser_export03.xls'); //输出到浏览器
		$objWriter->save("php://output");
 
		function browser_export($type,$filename){
			if( $type == "Excel5" ){
				// Redirect output to a client’s web browser (Excel5) 告诉浏览器将要输出excel03文件
                header('Content-Type: application/vnd.ms-excel');
			}elseif( $type == "Excel2007E" ){
				// Redirect output to a client’s web browser (Excel2007) 告诉浏览器将要输出excel07文件
			    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
			}
			
			 //告诉浏览器将输出文件的名称
             header('Content-Disposition: attachment;filename="'.$filename.'"');
             //禁止缓存
             header('Cache-Control: max-age=0'); 
             /*
             // If you're serving to IE 9, then the following may be needed
             header('Cache-Control: max-age=1');
             */
		}
 
 
?>

方法二

<?php
require_once dirname(__FILE__)."/Classes/PHPExcel.php";
//从mysql中获取数据
$pdo = new PDO("mysql:host=localhost;dbname=excels","root","");

if(isset($_GET['tbname'])){
      $tbname = $_GET['tbname'];
}else{
      echo "<script>alert('请给出要导出的数据库表名称');history.go(-1);</script>";
}

$stmt = $pdo->prepare("select * from $tbname");
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);



$excel = new PHPExcel();

//2.指定当前的sheet
$objSheet = $excel->setActiveSheetIndex(0);
//写入值
$objSheet->setCellValue('A1', 'ID');
$objSheet->setCellValue('B1', '商品名称');
$objSheet->setCellValue('C1', '价格');
$objSheet->setCellValue('D1', '库存');



$i=2;
foreach($result as $key=>$value){
    $j = 0;
    foreach ($value as $k=>$v) {
        $indexName = getCellName($j) . $i;
        $objSheet->setCellValue($indexName, $v);
       $j++;
    }
    $i++;
}


//4.保存文件
$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
//告诉浏览器以xlsx文件输出
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
//Content-Disposition 消息头指示输出内容该以何种形式展示, attachment:消息体应该被下载到本地
//filename的值预填为下载后的文件名
header('Content-Disposition: attachment;filename="01simple.xlsx"');
//设置缓存存储的最大周期,超过这个时间缓存被认为过期(单位秒),
//max-age=0 即不缓存
header('Cache-Control: max-age=0');
$objWriter->save('php://output');


function getCellName($index){
    $cell = range('A','Z');
    return $cell[$index];
}






PHPExcel读取Excel文件中的内容。

方法一

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/u012164509/article/details/109323539
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢