利用PHPExcel实现数据的导入导出

PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格。整体来说是一个不错的Excel操作类。

首先利用该类我们可以实现两个功能

1、将Excel里面的数据进行读取,导进MySQL

2、我们把统计的数据信息导出到Excel表格 实现数据的统计

第一步 我们先下载PHPExcel类库 下载地址

链接地址https://github.com/PHPOffice/PHPExcel

链接地址https://codeload.github.com/PHPOffice/PHPExcel/zip/1.8


因为当时我用的是YII1.1框架,我直接把PHPExcel类放在类文件里面,然后在配置文件进行引入,之后可以直接引用

1.将Excel数据提取出来,插入MySQL入库操作

	//导出Excel到数据库
	public function actionExport()
	{

		$dir = dirname(__FILE__);  //找出当前脚本所在路径
		
		//找出要导出的Excel文件
		$inputFileName = $dir.'/../service/excel/data2.xlsx';
		date_default_timezone_set('PRC');
		// 读取excel文件
		try {
		$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
		$objReader = PHPExcel_IOFactory::createReader($inputFileType);
		$objPHPExcel = $objReader->load($inputFileName);
		} catch(Exception $e) {
		die('加载文件发生错误:"'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
		}

		// 确定要读取的sheet,什么是sheet,看excel的右下角,真的不懂去百度吧
		$sheet = $objPHPExcel->getSheet(0);
		$highestRow = $sheet->getHighestRow();
		$highestColumn = $sheet->getHighestColumn();

		$tmp =[];
		// 获取一行的数据
		for ($row = 1; $row <= $highestRow; $row++){
		// Read a row of data into an array
		$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
		//这里得到的rowData都是一行的数据,得到数据后自行处理,我们这里只打出来看看效果
		// var_dump($rowData);
		// echo "<br>";
		$tmp[] = $rowData[0];
		}
		//打印Excel里面信息的数组
		print_r($tmp);


	}

2、将数据写入到Excel表格里面

	//将数据倒进Excel比表格
	public function actionExportinto($arr)
	{
		$dir = dirname(__FILE__);  //找出当前脚本所在路径
		

		/** Error reporting */
		error_reporting(E_ALL);
		ini_set('display_errors', TRUE);
		ini_set('display_startup_errors', TRUE);
		date_default_timezone_set('PRC');


		/** 引入PHPExcel */
		require_once $dir.'/../service/excel/PHPExcel.php';

		// 创建Excel文件对象
		$objPHPExcel = new PHPExcel();

		// 设置文档信息,这个文档信息windows系统可以右键文件属性查看
		$objPHPExcel->getProperties()->setCreator("作者简庆旺")
		    ->setLastModifiedBy("最后更改者")
		    ->setTitle("文档标题")
		    ->setSubject("文档主题")
		    ->setDescription("文档的描述信息")
		    ->setKeywords("设置文档关键词")
		    ->setCategory("设置文档的分类");


		//根据excel坐标,添加数据
		$objPHPExcel->setActiveSheetIndex(0)
		    ->setCellValue('A1', '推荐人ID')
		    ->setCellValue('B1', '推荐人昵称')
		    ->setCellValue('C1', '直接推荐人数')
		    ->setCellValue('D1', '参与推广率')
		    ->setCellValue('E1', '任务完成率');


	  	$key = 1;
	  	/*以下就是对处理Excel里的数据,横着取数据*/
	  	foreach($arr as $v){
	 
	  	//设置循环从第二行开始
	  	$key++;
	    $objPHPExcel->getActiveSheet()
	 
	     //Excel的第A列,name是你查出数组的键值字段,下面以此类推
	     ->setCellValue('A'.$key, $v['openid']) 
	     ->setCellValue('B'.$key, $v['name'])
	     ->setCellValue('C'.$key, $v['num'])
	     ->setCellValue('D'.$key, $v['tg'])
	     ->setCellValue('E'.$key, $v['wc']);
	 
	 	}

		// 重命名工作sheet
		$objPHPExcel->getActiveSheet()->setTitle('第二个sheet');

		// 设置第一个sheet为工作的sheet
		$objPHPExcel->setActiveSheetIndex(0);

		// 保存Excel 2007格式文件,保存路径为当前路径,名字为export.xlsx
		$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
                //数据存放位置
               $objWriter->save($dir.'/../service/export5.xlsx');


		// // 保存Excel 95格式文件,,保存路径为当前路径,
		// $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
		// $objWriter->save('export.xls');
	}

因为我是写在Yii框架控制器里面的,各自一个方法,导进去Excel只需传数组就OK


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值