composer require maatwebsite/excel

简单Excel导出

基础功能

使用create方法快速一个文件,文件名作为第一个参数

Excel::create('Filename');

手动创建文件,使用LaravelExcelWriter实例作为回调函数的参数

Excel::create('Filename', function($excel) {// Call writer methods here
});

设置属性

可以在闭包中修改一些属性,很多属性可在配置文件中设置默认值 config/excel.php

Excel::create('Filename', function($excel) {// Set the title
$excel->setTitle('Our new awesome title');
// Chain the setters
$excel->setCreator('Maatwebsite')
->setCompany('Maatwebsite');
// Call them separately
$excel->setDescription('A demonstration to change the file properties');
});

导出

可以使用->export($ext)->download($ext)下载创建的文件

导出到Excel5 (xls)

Excel::create('Filename', function($excel) {})->export('xls');
// or
->download('xls');

导出到Excel2007 (xlsx)

->export('xlsx');
// or
->download('xlsx');

导出到CSV (csv)

->export('csv');
// or
->download('csv');

导出到PDF

如果要导出文件到pdf,需要使用composer安装如下扩展之一

"dompdf/dompdf": "~0.6.1",

"mpdf/mpdf": "~6.1"

"tecnick.com/tcpdf": "~6.0.0"

同时需要设置config文件export.pdf.driver

NewExcelFile依赖注入

为了紧跟laravel5的步伐,引入NewExcelFile依赖注入

NewExcelFile 类

NewExcelFile是对新的Excel文件的封装,你可以在内部使用getFilename()声明文件名

class UserListExport extends \Maatwebsite\Excel\Files\NewExcelFile {public function getFilename()
{return 'filename';
}
}

使用方法

你可以注入 NewExcelFile类到控制器的构造方法或普通方法中。

class ExampleController extends Controller {public function exportUserList(UserListExport $export)
{// work on the export
return $export->sheet('sheetName', function($sheet)
{})->export('xls');
}
}

export句柄

为了完全从你的控制器中解耦 Excel-export代码,你可以使用export句柄

class ExampleController extends Controller {public function exportUserList(UserListExport $export)
{// Handle the export
$export->handleExport();
}
}

handleExport()方法可以动态的绑定

class UserListExportHandler implements \Maatwebsite\Excel\Files\ExportHandler {public function handle(UserListExport $export)
{// work on the export
return $export->sheet('sheetName', function($sheet)
{})->export('xls');
}
}

保存文件到服务器

可以使用->store($ext, $path = false, $returnInfo = false)或者->save()方法将创建的文件保存到服务器

保存文件到默认的storage目录

默认情况下,导出的文件会存储到storage/exports文件夹下,这个配置被设置在config文件export模块中

Excel::create('Filename', function($excel) {// Set sheets
})->store('xls');

保存文件到自定义目录

如果需要导出文件到自定义目录,可以设置store函数的第二个参数

->store('xls', storage_path('excel/exports'));

保存到服务器并导出文件

->store('xls')->export('xls');

保存并返回storage信息

如果你想返回storage信息,可是设置store的第三个参数或者到配置文件中修改

->store('xls', false, true);

Key

Explanation

full

文件路径(包括文件名)

path

文件路径(不包括文件名)

file

文件名

title

文件标题

ext

文件后缀

确保你的storage目录可写

Sheets

创建一个sheet

使用->sheet('Sheetname')方法,LaravelExcelWorksheet的实例$sheet作为回调函数(闭包)的参数

Excel::create('Filename', function($excel) {$excel->sheet('Sheetname', function($sheet) {// 操作sheet
});
})->export('xls');

创建多个sheet

你可以在创建的文件里面设置多个sheet

Excel::create('Filename', function($excel) {//第一个sheet
$excel->sheet('First sheet', function($sheet) {});
//第二个sheet
$excel->sheet('Second sheet', function($sheet) {});
})->export('xls');

设置属性

可以在闭包中修改一些属性,很多属性可在配置文件中设置默认值 config/excel.php

Excel::create('Filename', function($excel) {$excel->sheet('Sheetname', function($sheet) {$sheet->setOrientation('landscape');
});
})->export('xls');

可到参考手册查询更多属性

页面默认margin

可在配置文件excel::export.sheets中设置页面默认margin,接受三个可选数值类型:bool值,单个数值,数组

也可以通过->setPageMargin()手动设置

//设置 top, right, bottom, left
$sheet->setPageMargin(array(
0.25, 0.30, 0.25, 0.30
));
//设置所有margin
$sheet->setPageMargin(0.25);

设置密码保护sheet

可以使用$sheet->protect() 保护sheet安全

// 默认保护
$sheet->protect('password');
// 高级保护
$sheet->protect('password', function(\PHPExcel_Worksheet_Protection $protection) {$protection->setSort(true);
});

使用数组创建sheet

数组

在sheet闭包中使用->fromArray($source, $nullValue, $startCell, $strictNullComparison, $headingGeneration)创建文件

Excel::create('Filename', function($excel) {$excel->sheet('Sheetname', function($sheet) {$sheet->fromArray(array(
array('data1', 'data2'),
array('data3', 'data4')
));
});
})->export('xls');

当然你也可以使用 -with()

$sheet->with(array(
array('data1', 'data2'),
array('data3', 'data4')
));

如果你想通过闭包传递变量,使用use($data)

$data = array(
array('data1', 'data2'),
array('data3', 'data4')
);
Excel::create('Filename', function($excel) use($data) {$excel->sheet('Sheetname', function($sheet) use($data) {$sheet->fromArray($data);
});
})->export('xls');

空值比较

默认情况下,数值0会展示成一个空白单元格,你可以通过传递第四个参数来改变这种默认行为

// 这样0就会原样展示,而不是空白单元格
$sheet->fromArray($data, null, 'A1', true);

如果想改变默认行为,可以去修改配置文件对应属性 excel::export.sheets.strictNullComparison

Eloquent model

你也可以使用->fromModel($model)去导出文件,$model是Eloquent model的实例,这个方法接收和fromArray相同的参数

自动产生表头

默认导出的文件中,会使用数组Array(或者model的属性名)作为第一行(表头),你可以在配置文件中修改这一默认行为excel::export.generate_heading_by_indices,或者传递第5个参数,如下

// 导出文件不会自动产生表头
$sheet->fromArray($data, null, 'A1', false, false);

行操作

操作固定行

设置单行多个单元格数值

// 操作第一行
$sheet->row(1, array(
'test1', 'test2'
));
// 操作第二行
$sheet->row(2, array(
'test3', 'test4'
));

同时操作单行多个单元格

// 设置第一行背景为黑色
$sheet->row(1, function($row) {$row->setBackground('#000000');
});

向后插入一行

// 第二行后插入一行
$sheet->appendRow(2, array(
'appended', 'appended'
));
// 最后一行后插入一行
$sheet->appendRow(array(
'appended', 'appended'
));

向前插入一行

// 第一行前插入一行
$sheet->prependRow(1, array(
'prepended', 'prepended'
));
// 插入行到第一行
$sheet->prependRow(array(
'prepended', 'prepended'
));

向后插入多行

// 插入多行
$sheet->rows(array(
array('test1', 'test2'),
array('test3', 'test4')
));
// 插入多行
$sheet->rows(array(
array('test5', 'test6'),
array('test7', 'test8')
));

单元格操作

$sheet->cell('A1', function($cell) {// 操作单个单元格
$cell->setValue('data1');
});
$sheet->cells('A1:A5', function($cells) {// 批量操作单元格
});

设置背景

可以使用->setBackground($color, $type, $colorType)设置单元格背景

// 设置多个单元格背景为黑色
$cells->setBackground('#000000');

设置字体

// 设置字体颜色
$cells->setFontColor('#ffffff');
// 设置字体类型
$cells->setFontFamily('Calibri');
// 设置字体大小
$cells->setFontSize(16);
// 设置是否加粗
$cells->setFontWeight('bold');
// 设置字体
$cells->setFont(array(
'family'     => 'Calibri',
'size'       => '16',
'bold'       =>  true
));

设置边框

// 设置4个边框 (top, right, bottom, left)
$cells->setBorder('solid', 'none', 'none', 'solid');
// 设置边框(数组形式)
$cells->setBorder(array(
'top'   => array(
'style' => 'solid'
),
));

设置水平位置

// 设置水平居中
$cells->setAlignment('center');

设置垂直位置

//设置垂直居中
$cells->setValignment('center');

Sheet样式

普通样式

如果你想改变sheet的样式(并非某个或具体某些单元格),你可以使用->setStyle()方法

// 使用->setStyle()设置字体
$sheet->setStyle(array(
'font' => array(
'name'      =>  'Calibri',
'size'      =>  15,
'bold'      =>  true
)
));

字体

使用->setFont($array)设置当前sheet的字体样式

$sheet->setFont(array(
'family'     => 'Calibri',
'size'       => '15',
'bold'       => true
));

分别设置

// 字体
$sheet->setFontFamily('Comic Sans MS');
// 字体大小
$sheet->setFontSize(15);
// 字体加粗
$sheet->setFontBold(true);

边框

可以设置当前sheet的边框,如下:

// 设置当前sheet的所有边框
$sheet->setAllBorders('thin');
// 设置某个单元格的边框
$sheet->setBorder('A1', 'thin');
// 批量设置单元格边框
$sheet->setBorder('A1:F10', 'thin');

更多边框属性设置参见手册

冻结行

如果你想冻结某个单元格、行或者列,操作方法如下:

// 冻结第一行
$sheet->freezeFirstRow();
// 冻结第一列
$sheet->freezeFirstColumn();
// 冻结第一行和第一列
$sheet->freezeFirstRowAndColumn();
// 冻结A2单元格
$sheet->setFreeze('A2');

自动过滤

使用>setAutoFilter($range = false)方法进行自动过滤

// 设置整个sheet自动过滤
$sheet->setAutoFilter();
// 设置某个单元格范围进行自动过滤
$sheet->setAutoFilter('A1:E10');

单元格大小

设置列宽

使用->setWidth($cell, $width)设置列宽

// 设置单列宽度
$sheet->setWidth('A', 5);
// 同时设置多列宽度
$sheet->setWidth(array(
'A'     =>  5,
'B'     =>  10
));

设置行高

使用->setHeight($row, $height)设置行高

// 设置单行高度
$sheet->setHeight(1, 50);
// 同时设置多行高度
$sheet->setHeight(array(
1     =>  50,
2     =>  25
));

设置单元格大小

使用->setSize($cell, $width, $height)设置单元格大小

// 设置A1单元格大小
$sheet->setSize('A1', 500, 50);
$sheet->setSize(array(
'A1' => array(
'width'     => 50,
'height'    => 500
)
));

大小自适应

默认情况下导出的文件是大小自适应的,如果你想改变这一默认行为,可以修改config配置文件,或者如下设置

// 设置sheet大小自适应
$sheet->setAutoSize(true);
// 禁用sheet大小自适应
$sheet->setAutoSize(false);
// 禁止指定行自适应大小
$sheet->setAutoSize(array(
'A', 'C'
));

默认的配置可见 export.confg

合并单元格

合并多个单元格

可以使用->mergeCells($range)合并多个单元格

$sheet->mergeCells('A1:E1');

合并行和列

使用->setMergeColumn($array)合并行或列

$sheet->setMergeColumn(array(
'columns' => array('A','B','C','D'),
'rows' => array(
array(2,3),
array(5,11),
)
));

列格式化

使用->setColumnFormat($array),告诉Excel怎样格式化固定的列

// 设置列格式为百分比
$sheet->setColumnFormat(array(
'C' => '0%'
));
// 设置列单元格4位数字
$sheet->setColumnFormat(array(
'A2:K2' => '0000'
));
// 同时设置多列格式
$sheet->setColumnFormat(array(
'B' => '0',
'D' => '0.00',
'F' => '@',
'F' => 'yyyy-mm-dd',
));

更多可用格式参见手册

调用PHPExcel原生方法

可在$excel和$sheet对象上调用PHPExcel的原生方法

调用Workbook方法

例如:

// 获得workbook默认样式
$excel->getDefaultStyle();

调用worksheet方法

例如:

// 保护单元格
$sheet->protectCells('A1', $password);

到PHPOffice获取更多原生方法


http://www.taodudu.cc/news/show-4359115.html

相关文章:

  • xlsx怎么设置行高列宽_Excel2016中调整行高和列宽的两种方法
  • excel表格行宽列高怎么设置_解决方案:Excel自动调整列宽和行宽什么是快捷键? [Excel设置行高度自适应]...
  • 视频特效剪辑小技巧,给每个视频添加反相特效
  • Android OpenGL ES 学习(十一) –渲染YUV视频以及视频抖音特效
  • codeforces 702F 可持久化平衡树
  • 机器学习之决策树(机器学习技法)
  • 随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测
  • 买一台服务器到底能干什么?可用于这7点!
  • xp win7 绿色chrome
  • Google Chrome 81.0.4044.113 绿色增强版
  • Win10安装Selenium+Chrome+ChromeDriver(应用代码无需设置路径)
  • 特种部队小组2+蒲公英联机平台联机教程
  • 量化模型每一层的细节参数
  • IC前端整合(RTL to Netlist)所包含的流程,及Synthesis的主要任务
  • 低功耗基础——Lib文件中对ICG的描述
  • 数字IC设计的基本流程和主流EDA工具
  • 数字IC笔试题1
  • 数字ic2020海思提前批
  • 数字IC设计 - 逻辑综合简介与Design Compiler使用(GUI方式)
  • 一些企业个人网银的U盾或是usbkey在web(IE)网页中无法使用的解决方法
  • 关于 input在 chrome 、IE浏览器中遇到的兼容性问题处理
  • 怎么解决ie浏览器无法更改主页?
  • QT利用QAxWidget加载IE浏览器控件COM技术
  • python selenium 不打开浏览器_selenium+python自动化测试--解决无法启动IE浏览器及报错问题...
  • Linux搭建FTP,并使用Windows和IE浏览器访问FTP服务
  • 被玩坏的IE浏览器——漏洞利用方法和技巧介绍
  • IE浏览器弹出另存为文件(可以自主选择存储路径)对话框
  • 一行代码解决IE浏览器的兼容问题
  • IE与非IE浏览器调用PC摄像头拍摄并且上传
  • 火狐浏览器firefox检测不到U盾证书

laravel excel 2.1相关推荐

  1. laravel excel迁移到lumen

    1.简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel ,从而方便我们以优雅的.富有表现力的代码实现Excel/CSV文件的导入和 导出  ...

  2. laravel Excel导入导出

    1.简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel,从而方便我们以优雅的.富有表现力的代码实现Excel/CSV文件的导入和导出. 该 ...

  3. php导出照片,Laravel使用 Laravel Excel文件导出图片功能

    Laracel 中可以使用Laravel Excel进行Excel或者PDF的导出,使用composer进行安装此差价,Laravel-Excel将PHPExcel进行封装. 其官方文档:http:/ ...

  4. php框架使用教程,php框架laravel excel包使用教程介绍

    Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP了,下面我们来看看larave ...

  5. php laravel导入excel,Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

    @H_404_0@ 1.简介 @H_404_0@本文主要给大家介绍了关于Laravel 5用Laravel Excel实现Excel/CSV文件导入导出的相关内容,下面话不多说了,来一起看看详细的介绍 ...

  6. Laravel -- Excel 导入(import) (v2.1.0)

    原博客地址 https://www.jianshu.com/p/7287ebdc77bb Install (安装) //> composer.json 中 require中添加如下: " ...

  7. Laravel Excel实现Excel/CSV文件导入导出的功能详解(合并单元格,设置单元格样式)

    Laravel Excel实现Excel/CSV文件导入导出(合并单元格,设置单元格样式) 这篇文章主要给大家介绍了关于在Laravel中如何使用Laravel Excel实现Excel/CSV文件导 ...

  8. laravel excel 导出乱码

    在使用laravel excel 导出excel数据时,xls格式会出现乱码 一种解决办法是 导出格式变成csv 另外一种就是使用 ob_end_clean 附上自己使用laravel-admin封装 ...

  9. Laravel Excel文件模板导出

    这篇主要描述如何从模板中导出的内容,如果不想使用模板 可参考Laravel Excel 3.1 导出_json_li的博客-CSDN博客 目录 创建导出模型 创建模板文件 控制器中调用 1.激活下载窗 ...

  10. Laravel Excel(maatwebsite/excel )导入

    一:安装 1.要求: 2.安装命令: 使用Composer安装依赖 composer require maatwebsite/excel使用Composer安装依赖 指定版本 composer req ...

最新文章

  1. java 打开服务器excel文件_Java中上传excel文件并在服务器端读取存入数据库
  2. Linux视频选用的版本,Ubuntu 及衍生版本用户安装视频播放器 SMPlayer 14.3.0
  3. P3714 [BJOI2017]树的难题
  4. 堆排序的应用-优先级队列
  5. Note that ‘/home/w/.local/share‘ is not in the search pathset by the XDG_DATA_HOME and XDG_DATA_DIRS
  6. eve单机版mysql_eve单机版中文下载_eve单机版下载-游迅网
  7. Java小农养成记第一天
  8. 谷歌将发布全新搜索引擎,你期待吗?
  9. 丰沛数_不足数_完全数
  10. php连接数据库的留言板,PHP+MySql实现简单的留言板功能
  11. 我是如何在毕业不久只用1年就升为开发组长的?
  12. PhysX物理引擎入门教程
  13. 巴菲特致股东的一封信:2010年
  14. elasticsearch Analyzer
  15. 阿里云ACP认证之内容分发网络CDN知识整理(考题占比 3%)
  16. 迅雷云盘怎么转到百度网盘?
  17. 抖音视频文案怎么写,短视频台词文案
  18. django创建应用程序_使用Django创建基于机器学习的Web应用程序
  19. 全球及中国物联网智能模组行业竞争态势及发展战略规划报告2022-2028年版
  20. security放行 spirng_Spring Security的核心拦截器

热门文章

  1. 【COMSOL】在结构力学中使用自定义外部材料模型 · Mazars 损伤模型
  2. python+django+layUI+MySQL+TSC打印机搭建4G设备管理平台项目(二)——过程中的难点记录
  3. vst开启语音服务器,VST语音遥控器体验记
  4. 矩阵--范德蒙德行列式
  5. axios和layUI配合加载数据表格demo
  6. 将微信聊天记录转成txt文件的最实用方法
  7. JS获取特殊字符前面的字符串
  8. ReferenceError: primordials is not defined错误解决
  9. unable to locate解决方法
  10. 2022低压电工考题及答案