laravel实现excel导入导出
程序员文章站
2024-03-21 19:50:22
...
Laravel Excel官方文档: https://laravel-excel.maatwebsite.nl/
一、安装&配置
使用Composer安装依赖
首先在Laravel项目根目录下使用Composer安装依赖:
composer require maatwebsite/excel ~2.0.0
// 安装完成后在vendor\maatwebsite目录下会产生一个excel的文件,就表示安装完成了
安装后的设置:
在 config/app.php 中注册组件到 aliases 数组:
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
二、导出Excel的方法
// 引入excel
use Excel;
use PHPExcel_Worksheet_Drawing;// 导出图片时需要的
/*导出普通数据表格*/
public function export(){
ini_set('memory_limit','500M');
set_time_limit(0);//设置超时限制为0分钟
// 取出需要导出的数据列表
$cellData = User::select('username','token','remark')->limit(5)->get()->toArray();
// 设置导出的excel头信息
$cellData[0] = array('昵称','token','备注');
// 把取出的数组遍历格式化
// [
// [
// "昵称",
// "token",
// "备注",
// ],
// [
// "范迪塞尔",
// "",
// "范迪塞尔",
// ]
// ]
for($i=0;$i<count($cellData);$i++){
$cellData[$i] = array_values($cellData[$i]);
$cellData[$i][0] = str_replace('=',' '.'=',$cellData[$i][0]);
}
// 创建导出excel 表格
Excel::create('用户信息',function($excel) use ($cellData){
// 创建其中一个sheet 需要导出的数据集合$cellData
$excel->sheet('score', function($sheet) use ($cellData){
$sheet->rows($cellData);
});
// 第二个sheet 需要导出的数据集合$cellData
$excel->sheet('score', function($sheet) use ($cellData){
$sheet->rows($cellData);
});
})->export('xls');
}
/*导出带图片的数据表格*/
public function export1(){
ini_set('memory_limit','500M');
set_time_limit(0);//设置超时限制为0分钟
$cellData = User::select('username','token','remark','head_url')->limit(5)->get()->toArray();
// 设置表头
$cellData[0] = array('昵称','token','备注','头像');
// 把需要导出的数据遍历成一个数组
for($i=0;$i<count($cellData);$i++){
$cellData[$i] = array_values($cellData[$i]);
$cellData[$i][0] = str_replace('=',' '.'=',$cellData[$i][0]);
}
// 创建导出excel 表格
Excel::create('用户信息',function($excel) use ($cellData){
$excel->sheet('score', function($sheet) use ($cellData){
// init列
$title_array = ['A', 'B', 'C', 'D'];
// 遍历数据
for($i=0;$i<sizeof($cellData);$i++){
foreach($cellData[$i] as $k=>$v){
// 设置图片列高度
$i>0 && $sheet->setHeight($i+1, 65);
// 设置图片列宽度
$sheet->setWidth(array('F'=>12));
// 图片放在第三列,列是从0开始的
// 判断图片列,如果是则放图片
if($k == 3 && $i>0){
$objDrawing = new PHPExcel_Worksheet_Drawing;
// 图片的路径
$objDrawing->setPath(storage_path('/app/public/uploads/').$v);
$objDrawing->setCoordinates($title_array[$k] . ($i+1));
$objDrawing->setHeight(80);
$objDrawing->setOffsetX(1);
$objDrawing->setRotation(1);
$objDrawing->setWorksheet($sheet);
continue;
}
// 否则放置文字数据
$sheet->cell($title_array[$k] . ($i+1), function ($cell) use ($v) {
$cell->setValue($v);
});
}
}
});
})->export('xls');
}
上一篇: 1
下一篇: 用二维数组打印一个杨辉三角