首页 > php开发 > PHPExcel生成和读取Excel文件实例程序

PHPExcel生成和读取Excel文件实例程序

PHPExcel是一个非常方便生成Excel格式文件的类,官方下载包中带有大量如何生成各种样式excel文件的示例,但没有一个读取Excel文件的完整例子.Xiaoqiang根据网上的资料,整理了一份简单读取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 />"; 
    } 
}

                           


本文链接:http://www.phprm.com/develop/fs3803.html

收藏随意^^请保留教程地址.

标签:phpexcel excel文件 生成读取

相关文章

发表留言