PHP处理Excel文件

今天小编讲讲使用PHPExcel类的最基本也是最重要的操作,去处理excel表格。

1.下载

可以使用 给特哈普 下载 ,地址:https://github.com/PHPOffice/PHPExcel

也可用 composer 拉取,命令:composer require phpoffice/phpexcel

其中我们只需要:classes 目录里面的 PHPExcel 和 PHPExcel.php 就可以使用了 ;

2.写 excel 文件

$dir = dirname(__FILE__);   //找到当前的脚本所在路径。
require_once $dir.'./Excel/PHPExcel.php';  //引入文件

$objPHPExcel = new PHPExcel();   //实例化PHPExcel类 等同于在桌面上新建了一个 Excel 表格。
$objSheet    = $objPHPExcel->getActiveSheet();  //这里的 Active 指的是你正在工作的 sheet 页。

//写数据有俩种方法
//方法1
$objSheet->setCellValue('A1','姓名')->setCellValue('B1','分数');    // 可以使用链式的方式添加数据
//方法2
$arr = [
	['',''],
    ['姓名','分数'],
    ['李四','60'],
    ['王五','61'],

];
$objSheet->fromArray($arr);  //用起来方便,但性能消耗大。

$objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');  //按照指定格式生成excel文件 
//Excel2007  ->    xlsx
//Excel5     ->    xls

$objWrite->save($dir.'./test.xlsx');   //保存写好的文件


3.读 Excel 文件

header('Content-Type:text/html;charset=utf-8');
$dir = dirname(__FILE__);
require $dir.'/Excel/PHPExcel/IOFactory.php';
$filename = $dir.'/dome.xlsx';

//加载文件方法有俩种方法
//方法 1  
$objPHPExecl = PHPExcel_IOFactory::load($filename); //一句话简单粗暴,
//但是他会把你文件里的所有 sheet 全部加载出来,性能消耗大。

//方法 2
$fileType = PHPExcel_IOFactory::identify($filename);//返回文件类型
$objReader = PHPExcel_IOFactory::createReader($fileType);//获得文件读取对象
$sheetName = 'hello'; // 只加载 sheet 名是hello 的,想加载多个指定 sheet 这里可使用数组
$objReader->setLoadSheetsOnly($sheetName);
$objPHPExecl = $objReader->load($filename);  //只加载指定的sheet

//读文件方法也有俩种
// 方法 1
$sheetConut = $objPHPExecl->getSheetCount();  //获得 sheet 总数
for($i=0;$i<$sheetConut;$i++){
    $data = $objPHPExecl->getSheet($i)->toArray();  //读取每个sheet
    var_dump($data);
}
// 也是简单粗暴,性能消耗大,文件大时会卡死。

//方法 2 
foreach($objPHPExecl->getWorksheetIterator() as $sheet){//循环取sheet
    foreach($sheet->getRowIterator() as $row){
        foreach($row->getCellIterator() as $cell){
            $data = $cell->getValue();
            echo($data);
        }
    }
}
// 这里使用了 $objPHPExecl 内部的迭代器,性能得到了优化

//这里的 加载方式和读取文件方式 读是二选其一便可


4.导出到浏览器


$objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');//按照指定格式生成excel文件 
browserExport('Execl2007','test.xlsx');//输出到浏览器
$objWrite->save('php://output');

//封装了一个输出到浏览器的方法
function browserExport($type,$filename){
    if ($type == 'Excel5'){
        header('Content-Type: application/vnd.ms-excel');//告诉浏览器要输出 xls 文件
    }else{
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        //告诉浏览器要输出 xlsx 文件
    }
    header('Content-Disposition: attachment;filename='.$filename);  //告诉浏览器要输出的文件名
    header('Cache-Control: max-age=0');   //禁止缓存
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值