您的位置:首页 > 编程语言 > PHP开发

phpspreadsheet 导出excel文件 详情步骤

2018-12-11 16:48 555 查看
[code]<?php
composer下载就不说了
安装了composer
打开cmd 运行composer
有没有安装上composer  输入composer -v

切换到项目目录   composer下载 composer require phpoffice/phpspreadsheet

//引入自动加载类
require_once "vendor/autoload.php";
//使用Spreadsheet类
use PhpOffice\PhpSpreadsheet\Spreadsheet;
//xlsx格式类
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
//可以生成多种格式类
use PhpOffice\PhpSpreadsheet\IOFactory;

//总结规律 设置参数的时候如果用$sheet $sheet->setTitle('Hello');而用$spreadsheet $spreadsheet->getActiveSheet()->setTitle('Hello'); 所有参数应该都可用这里两种方法

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
//设置sheet的名字  两种方法
$sheet->setTitle('phpspreadsheet——demo');
$spreadsheet->getActiveSheet()->setTitle('Hello');
//设置第一行小标题
$k = 1;
$sheet->setCellValue('A'.$k, '姓名');
$sheet->setCellValue('B'.$k, '年龄');
$sheet->setCellValue('C'.$k, '身份');
$sheet->setCellValue('D'.$k, '住址');

$info = array(
['name'=>'阿修罗','age'=>'11','identity'=>'杀手','address'=>'地狱'],
['name'=>'释迦摩尼','age'=>'>&','identity'=>'传销','address'=>'西方'],
['name'=>'李世民','age'=>'60','identity'=>'皇帝','address'=>'洛阳'],
['name'=>'朱元璋','age'=>'70','identity'=>'乞丐','address'=>'朱庄']
);
//设置A单元格的宽度 同理设置每个
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(20);
//设置第三行的高度
$spreadsheet->getActiveSheet()->getRowDimension('3')->setRowHeight(50);
//A1水平居中
$styleArray = [
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
],
];
$sheet->getStyle('A1')->applyFromArray($styleArray);
//将A3到D4合并成一个单元格
$spreadsheet->getActiveSheet()->mergeCells('A3:D4');
//拆分合并单元格
$spreadsheet->getActiveSheet()->unmergeCells('A3:D4');
//将A2到D8表格边框 改变为红色
$styleArray = [
'borders' => [
'outline' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
'color' => ['argb' => 'FFFF0000'],
],
],
];
$sheet->getStyle('A2:D8')->applyFromArray($styleArray);
//设置超链接
$sheet->setCellValue('D6', 'www.baidu.com');
$spreadsheet->getActiveSheet()->setCellValue('E6', 'www.baidu.com');
//循环赋值
$k = 2;
foreach ($info as $key => $value) {
$sheet->setCellValue('A'.$k, $value['name']);
$sheet->setCellValue('B'.$k, $value['age']);
$sheet->setCellValue('C'.$k, $value['identity']);
$sheet->setCellValue('D'.$k, $value['address']);
$k++;
}
$file_name = date('Y-m-d', time()).rand(1000, 9999);
//第一种保存方式
/*$writer = new Xlsx($spreadsheet);
//保存的路径可自行设置
$file_name = '../'.$file_name . ".xlsx";
$writer->save($file_name);*/
//第二种直接页面上显示下载
$file_name = $file_name . ".xlsx";
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$file_name.'"');
header('Cache-Control: max-age=0');
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
//注意createWriter($spreadsheet, 'Xls') 第二个参数首字母必须大写
$writer->save('php://output');

下面是效果:

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: