接下来我会详细讲解“PHP实现导出带样式的Excel”的完整攻略。
一、背景介绍
在实际的开发工作中,我们常常需要使用到Excel表格,然而PHP并没有内置的类或函数可以直接导出带样式的Excel,因此我们需要借助一些第三方工具来实现。
二、选择合适的第三方工具
市场上有很多第三方工具可以帮助我们实现导出Excel的功能,例如PHPExcel、PhpSpreadsheet等,这里我们以PhpSpreadsheet为例进行讲解。
2.1 安装PhpSpreadsheet
可以通过Composer来安装PhpSpreadsheet,执行以下命令即可:
composer require phpoffice/phpspreadsheet
2.2 引入PhpSpreadsheet
安装完成后,在需要使用的文件中引入PhpSpreadsheet:
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
三、实现导出功能
接下来我们来讲解如何使用PhpSpreadsheet实现导出功能。
3.1 新建表格
// 新建表格
$spreadsheet = new Spreadsheet();
// 获取活动表
$sheet = $spreadsheet->getActiveSheet();
3.2 设置表格的标题
// 设置表格的标题
$sheet->setCellValue('A1', '姓名');
$sheet->setCellValue('B1', '年龄');
$sheet->setCellValue('C1', '性别');
3.3 设置表格的数据
// 设置表格的数据
$data = array(
array('张三', 18, '男'),
array('李四', 21, '女'),
array('王五', 25, '男'),
);
// 循环写入数据
foreach($data as $key => $value) {
$sheet->setCellValue('A'.($key+2), $value[0]);
$sheet->setCellValue('B'.($key+2), $value[1]);
$sheet->setCellValue('C'.($key+2), $value[2]);
}
3.4 设置表格的样式
// 设置表格的样式
// 头部样式
$headerStyle = array(
'font' => array('bold' => true,),
'alignment' => array('horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,),
'fill' => array('fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => array('rgb' => 'E0E0E0'),),
);
$sheet->getStyle('A1:C1')->applyFromArray($headerStyle);
// 内容样式
$contentStyle = array(
'fill' => array('fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => array('rgb' => 'F5F5F5'),),
);
$sheet->getStyle('A2:C4')->applyFromArray($contentStyle);
3.5 生成Excel文件
// 生成Excel文件
$writer = new Xlsx($spreadsheet);
$writer->save('./example.xlsx');
四、示例说明
4.1 示例一:基础表格导出
假设我们需要导出一个学生成绩表格,包含姓名、年龄、性别三项信息。数据如下:
姓名 | 年龄 | 性别 |
---|---|---|
张三 | 18 | 男 |
李四 | 21 | 女 |
王五 | 25 | 男 |
代码实现如下:
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
// 新建表格
$spreadsheet = new Spreadsheet();
// 获取活动表
$sheet = $spreadsheet->getActiveSheet();
// 设置表格的标题
$sheet->setCellValue('A1', '姓名');
$sheet->setCellValue('B1', '年龄');
$sheet->setCellValue('C1', '性别');
// 设置表格的数据
$data = array(
array('张三', 18, '男'),
array('李四', 21, '女'),
array('王五', 25, '男'),
);
// 循环写入数据
foreach($data as $key => $value) {
$sheet->setCellValue('A'.($key+2), $value[0]);
$sheet->setCellValue('B'.($key+2), $value[1]);
$sheet->setCellValue('C'.($key+2), $value[2]);
}
// 生成Excel文件
$writer = new Xlsx($spreadsheet);
$writer->save('./example.xlsx');
4.2 示例二:带样式的表格导出
基于示例一,我们在表格中增加一些样式,如下表格:
姓名 | 年龄 | 性别 |
---|---|---|
张三 | 18 | 男 |
李四 | 21 | 女 |
王五 | 25 | 男 |
头部样式:加粗、居中、背景色为淡灰色;
内容样式:背景色为浅灰色。
代码实现如下:
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
// 新建表格
$spreadsheet = new Spreadsheet();
// 获取活动表
$sheet = $spreadsheet->getActiveSheet();
// 设置表格的标题
$sheet->setCellValue('A1', '姓名');
$sheet->setCellValue('B1', '年龄');
$sheet->setCellValue('C1', '性别');
// 设置表格的数据
$data = array(
array('张三', 18, '男'),
array('李四', 21, '女'),
array('王五', 25, '男'),
);
// 循环写入数据
foreach($data as $key => $value) {
$sheet->setCellValue('A'.($key+2), $value[0]);
$sheet->setCellValue('B'.($key+2), $value[1]);
$sheet->setCellValue('C'.($key+2), $value[2]);
}
// 设置表格的样式
// 头部样式
$headerStyle = array(
'font' => array('bold' => true,),
'alignment' => array('horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,),
'fill' => array('fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => array('rgb' => 'E0E0E0'),),
);
$sheet->getStyle('A1:C1')->applyFromArray($headerStyle);
// 内容样式
$contentStyle = array(
'fill' => array('fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => array('rgb' => 'F5F5F5'),),
);
$sheet->getStyle('A2:C4')->applyFromArray($contentStyle);
// 生成Excel文件
$writer = new Xlsx($spreadsheet);
$writer->save('./example.xlsx');
以上就是使用PhpSpreadsheet实现导出带样式的Excel的完整攻略,希望能对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现导出带样式的Excel - Python技术站