这里有新鲜出炉的 PHP 面向对象编程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
在网站的管理后台经常会使用到报表的生成和读取,CSV 和 Excel 都是常用的报表格式,本文是介绍 php 生成与读取 excel 文件,需要的朋友可以来了解一下。
在网站中经常会生成表格,CSV 和 Excel 都是常用的报表格式,CSV 相对来说比较简单,如果大家有疑问我会相继发布一些 CSV 的实例,这里主要介绍用 PHP 来生成和读取 Excel 文件。
要执行下面的函数,首先要引入一个类库:PHPExcel,PHPExcel 是一个强大的 PHP 类库,用来读写不同的文件格式,比如说 Excel 2007,PDF 格式,html 格式等等,这个类库是建立在 Microsoft's OpenXML 和 PHP 的基础上的,对 Excel 提供的强大的支持,比如设置工作薄,字体样式,图片以及边框等等,下面来看看它是如何读写 Excel 文件的:
首先来看如果生成 Excel 文件:
下面这代码中函数 arrayToExcel 的功能是把一个二维数组的数据生成一个 excel 文件,并且保存在服务器上。
- require_once 'Classes/PHPExcel/Reader/Excel2007.php';
- require_once 'Classes/PHPExcel/Reader/Excel5.php';
- include 'Classes/PHPExcel/IOFactory.php';
- function arrayToExcel($data) {
- $objPHPExcel = new PHPExcel();
- $objPHPExcel - >setActiveSheetIndex(0);
- $objPHPExcel - >getActiveSheet() - >setTitle('firstsheet');
- $objPHPExcel - >getDefaultStyle() - >getFont() - >setName('Arial');
- $objPHPExcel - >getDefaultStyle() - >getFont() - >setSize(10);
- //add data
- $i = 2;
- foreach($data as $line) {
- $objPHPExcel - >getActiveSheet() - >setCellValue('A'.$i, $line['From']);
- $objPHPExcel - >getActiveSheet() - >getCell('A'.$i) - >setDataType('n');
- $objPHPExcel - >getActiveSheet() - >setCellValue('B'.$i, $line['To']);
- $objPHPExcel - >getActiveSheet() - >getCell('B'.$i) - >setDataType('n');
- $i++;
- }
- $objWriter = PHPExcel_IOFactory: :createWriter($objPHPExcel, 'Excel5');
- $file = 'excel.xls';
- $objWriter - >save($file);
- }
如果你不希望保存在服务器上,希望生成以后直接下载到客户端,可以在输出文件的时候加入下面的代码,而不使用 $objWriter->save($file);
代码如下:
- header("Pragma: public");
- header("Expires: 0");
- header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
- header("Content-Type:application/force-download");
- header("Content-Type:application/vnd.ms-execl");
- header("Content-Type:application/octet-stream");
- header("Content-Type:application/download");
- header('Content-Disposition:attachment;filename="excel.xls"');
- header("Content-Transfer-Encoding:binary");
- $objWriter - >save('php://output');
接下来看一个读取 Excel 文件内容的实例:
下面这代码中函数 excelToArray 的功能是把一个 excel 里的内容重新整理放到一个数组了。
代码如下:
- require_once 'Classes/PHPExcel.php';
- require_once 'Classes/PHPExcel/IOFactory.php';
- function excelToArray($file) {
- $objReader = PHPExcel_IOFactory: :createReader('Excel5');
- $objReader - >setReadDataOnly(true);
- $objPHPExcel = $objReader - >load($file);
- $objWorksheet = $objPHPExcel - >getActiveSheet();
- $highestRow = $objWorksheet - >getHighestRow();
- $highestColumn = $objWorksheet - >getHighestColumn();
- $highestColumnIndex = PHPExcel_Cell: :columnIndexFromString($highestColumn);
- $excelData = array();
- for ($row = 2; $row <= $highestRow; ++$row) {
- for ($col = 0; $col <= $highestColumnIndex; ++$col) {
- $excelData[$row][] = $objWorksheet - >getCellByColumnAndRow($col, $row) - >getValue();
- }
- }
- return $excelData;
- }
精简办法
代码如下:
- <?php
- /**
- *
- * @copyright 2007-2012 Xiaoqiang.
- * @author Xiaoqiang.Wu <jamblues@gmail.com>
- * @version 1.01
- */
- error_reporting(E_ALL);
- date_default_timezone_set('Asia/ShangHai');
- /** PHPExcel_IOFactory */
- require_once '../Classes/PHPExcel/IOFactory.php';
- // Check prerequisites
- if (!file_exists("31excel5.xls")) {
- exit("not found 31excel5.xls.n");
- }
- $reader = PHPExcel_IOFactory::createReader('Excel5'); //设置以Excel5格式(Excel97-2003工作簿)
- $PHPExcel = $reader->load("31excel5.xls"); // 载入excel文件
- $sheet = $PHPExcel->getSheet(0); // 读取第一??工作表
- $highestRow = $sheet->getHighestRow(); // 取得总行数
- $highestColumm = $sheet->getHighestColumn(); // 取得总列数
- /** 循环读取每个单元格的数据 */
- for ($row = 1; $row <= $highestRow; $row++){//行数是以第1行开始
- for ($column = 'A'; $column <= $highestColumm; $column++) {//列数是以A列开始
- $dataset[] = $sheet->getCell($column.$row)->getValue();
- echo $column.$row.":".$sheet->getCell($column.$row)->getValue()."<br />";
- }
- }
- ?>
希望本文所述对你有所帮助,php 生成与读取 excel 文件内容就给大家介绍到这里了。希望大家继续关注我们的网站! 想要学习 php 可以继续关注本站。
来源: http://www.phperz.com/article/17/0806/341995.html