利用PHPExcel导出excel文件的方法详解
在使用PHP开发网站应用时,有时候需要将数据导出成Excel文件供用户下载,这时PHPExcel就是一个不错的选择。本文将详细讲解如何使用PHPExcel导出Excel文件。
前提要求
使用PHPExcel需要满足以下前提要求:
- PHP版本5.2.0或以上
- PHP扩展php_zip和php_xml
- PHP扩展php_gd2(如果需要生成图表或者使用图片等)
安装PHPExcel
PHPExcel的安装可以选择直接下载压缩包解压到项目目录中,或者使用Composer进行安装。使用Composer进行安装的步骤如下:
- 在项目目录下执行
composer require phpoffice/phpexcel
命令,将PHPExcel添加到项目依赖中并下载到vendor
目录下。 - 在PHP文件中引入自动加载文件:
require_once 'vendor/autoload.php';
导出Excel文件
使用PHPExcel导出Excel文件的步骤如下:
- 创建PHPExcel对象
- 配置PHPExcel对象
- 添加表头数据
- 添加每一行数据
- 设置单元格格式
- 输出Excel文件
一下将会详细讲解每一步骤所需要的操作。
创建PHPExcel对象
在PHPExcel中,我们需要先创建一个PHPExcel对象,使用下面的代码即可完成:
$excel = new \PHPExcel();
配置PHPExcel对象
在PHPExcel对象被创建之后,需要进行一些配置,例如设置文件属性,设置当前活动Sheet等。
// 设置文件属性
$excel->getProperties()
->setCreator("Your Name")
->setLastModifiedBy("Your Name")
->setTitle("Demo Excel")
->setSubject("Demo Export")
->setDescription("Demo");
// 设置当前活动Sheet
$excel->setActiveSheetIndex(0);
添加表头数据
在PHPExcel中,表头数据通常位于第一行,需要在PHPExcel对象中添加。添加表头数据时,可以使用setCellValue()方法,该方法接收两个参数,第一个参数为单元格的标识,第二个参数为单元格的值。
// 添加表头数据
$excel->getActiveSheet()
->setCellValue('A1', '姓名')
->setCellValue('B1', '年龄')
->setCellValue('C1', '性别');
添加每一行数据
在添加完表头数据后,接下来需要添加每一行的数据。下面的示例代码展示了如何添加两条数据:
// 添加第一条数据
$excel->getActiveSheet()
->setCellValue('A2', '小明')
->setCellValue('B2', '12')
->setCellValue('C2', '男');
// 添加第二条数据
$excel->getActiveSheet()
->setCellValue('A3', '小红')
->setCellValue('B3', '11')
->setCellValue('C3', '女');
需要注意的是,如果添加的数据过多,可以采用循环的方式添加。
设置单元格格式
在PHPExcel中,可以使用setAutoSize()方法设置单元格的自动宽度。该方法接收一个参数,为设置自动宽度的单元格标识。
// 设置表头数据自动宽度
$excel->getActiveSheet()
->getColumnDimension('A')
->setAutoSize(true);
$excel->getActiveSheet()
->getColumnDimension('B')
->setAutoSize(true);
$excel->getActiveSheet()
->getColumnDimension('C')
->setAutoSize(true);
输出Excel文件
在完成PHPExcel对象的配置后,就可以将其输出为一个Excel文件了。输出方式有多种,例如直接输出到浏览器,保存到服务器等。
直接输出到浏览器
将Excel文件输出到浏览器的方式如下:
// 直接输出Excel文件给浏览器下载
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment;filename=demo.xlsx");
header("Cache-Control: max-age=0");
$writer = \PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$writer->save('php://output');
保存到服务器
将Excel文件保存到服务器的方式如下:
// 将Excel文件保存到服务器
$writer = \PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$writer->save('demo.xlsx');
示例说明
下面的示例代码展示了如何使用PHPExcel导出一个包含两条数据的Excel文件:
// 引入自动加载文件
require_once 'vendor/autoload.php';
// 创建PHPExcel对象
$excel = new \PHPExcel();
// 设置文件属性
$excel->getProperties()
->setCreator("Your Name")
->setLastModifiedBy("Your Name")
->setTitle("Demo Excel")
->setSubject("Demo Export")
->setDescription("Demo");
// 设置当前活动Sheet
$excel->setActiveSheetIndex(0);
// 添加表头数据
$excel->getActiveSheet()
->setCellValue('A1', '姓名')
->setCellValue('B1', '年龄')
->setCellValue('C1', '性别');
// 添加数据
$excel->getActiveSheet()
->setCellValue('A2', '小明')
->setCellValue('B2', '12')
->setCellValue('C2', '男');
$excel->getActiveSheet()
->setCellValue('A3', '小红')
->setCellValue('B3', '11')
->setCellValue('C3', '女');
// 设置表头数据自动宽度
$excel->getActiveSheet()
->getColumnDimension('A')
->setAutoSize(true);
$excel->getActiveSheet()
->getColumnDimension('B')
->setAutoSize(true);
$excel->getActiveSheet()
->getColumnDimension('C')
->setAutoSize(true);
// 直接输出Excel文件给浏览器下载
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment;filename=demo.xlsx");
header("Cache-Control: max-age=0");
$writer = \PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$writer->save('php://output');
以上代码将输出一个包含两条数据的Excel文件,并直接下载到客户端。
另外,也可以使用保存到服务器的方式存储文件,如:
// 将Excel文件保存到服务器
$writer = \PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$writer->save('demo.xlsx');
保存的文件名为demo.xlsx
,可以通过浏览器访问下载。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用PHPExcel导出excel文件的方法详解 - Python技术站