一、导出
使用PHPExcel类库完成数据导出的功能。类库文件以及code file(代码文件)会在文章最底部提供下载。好了 话不多说直接上代码
<?php //导出数据为excel格式 //要导出的数据数组(这里通常都是从数据库[mysql等]读取出来的数据 这里我就直接写一个数组来代替了) $arr = array( 0 => array('book_name' => 'PHP','price' => '99.00','isbn' =>'11-111'), 1 => array('book_name' => 'mysql','price' => '100.00','isbn' => '22-222'), 2 => array('book_name' => 'Linux','price' => '110.00','isbn' => '33-333') ); //引入类库文件 require_once 'PHPExcel.php'; //创建PHPExcel对象 $objPHPExcel=new PHPExcel(); //设置文件属性 $objPHPExcel->getProperties()->setCreator('http://www.jb51.net') ->setLastModifiedBy('http://www.jb51.net') ->setTitle('Office 2007 XLSX Document') ->setSubject('Office 2007 XLSX Document') ->setDescription('Document for Office 2007 XLSX, generated using PHP classes.') ->setKeywords('office 2007 openxml php') ->setCategory('Result file'); //给导出的excel添加列名称 $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1','书名') //设置A1单元格的名称为 书名 ->setCellValue('B1','价格') //设置B1单元格的名称为 价格 ->setCellValue('C1','编号'); //设置C1单元格的名称为 编号 //设置excel文件的指定的列的单元格的宽度 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(13); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(10); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15); //循环数组给A、B、C等列添加对应的数据 $i=2; //从excel文件的第2行开始逐一写入数据 foreach($arr as $key => $val) { $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A'.$i,$val['book_name']) ->setCellValue('B'.$i,' '.$val['price']) ->setCellValue('C'.$i,$val['isbn']); $i++; } $filename=urlencode('').date('YmdHis'); //用时间戳给导出的excel文件命名 //*生成xlsx文件 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'); //excel-2007格式 如需要导出低版本excel 最好是将后缀扩展名从xlsx改成xls header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"'); header('Cache-Control: max-age=0'); //保存导出的excel文件(导出的是excel-2007格式 如果需要导出低版本excel 将'Excel2007'参数换成'Excel5') $objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007'); $objWriter->save('php://output'); exit; ?>
导出之后打开保存下来的excel文件 最终效果如下:
二、导入
示例代码如下:
<?php //使用PHPExcel导入数据示例 //加载PHPExcel类库文件 require_once './PHPExcel.php'; require_once './PHPExcel/IOFactory.php'; require_once './PHPExcel/Reader/Excel5.php'; /*一般要导入的excel文件是用户自己上传的excel格式的文件。这里我就直接以demo_import_excel.xlsx这个文件 来当做已经上传好了的excel文件 */ $file_name = './demo_import_excel.xlsx'; $objReader = new PHPExcel_Reader_Excel2007(); $objPHPExcel = $objReader->load($file_name); $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); //总行数 $highestColumn = $sheet->getHighestColumn(); //总列数 //开始循环读取excel单元格里的数据 for($loop = 3; $loop <=$highestRow; $loop++) { /* 注意:这里的A3:H 其中A3表示是从A3的这个单元格开始往下读取 一直读取到excel单元格的H列结束,第二次循环($loop++之后) 则开始从A4单元格开始读取 一直读取到H列。。。等等等等 直到循环完毕所有有值的excel行数(即:$highestRow) */ $data_arr = $objPHPExcel->getActiveSheet()->rangeToArray( 'A3:H'.$highestRow ); } echo '<pre>'; print_r($data_arr); //输出已经读取完excel文件的数据 echo '</pre>'; /* $data_arr就是我们使用PHPExcel类库读取完excel文件的数据(一个二维数组)了, 拿到这个数据我们就可以对其进行插入到数据库里了(比如mysql等) */ ?>
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论