• laravel-excel 表格 文档翻译笔记


    原文地址:https://blog.csdn.net/beyond__devil/article/details/78117471

    1.安装
    1>composer 安装 "maatwebsite/excel": "~2.1.0"
    2>app/config/app.php,添加服务
    MaatwebsiteExcelExcelServiceProvider::class
    设置Facade:
    'Excel' => MaatwebsiteExcelFacadesExcel::class,
    这样,就将 'excel' 绑定到了laravel的ioc容器
    $excel = App::make('excel');
    3>生成配置文件
    php artisan vendor:publish --provider="MaatwebsiteExcelExcelServiceProvider"
    将会在 'app/config/' 添加 'excel.php' 文件
    4>依赖
    php > 5.3.7
    laravel >= 4.1
    PHPOffice PHPExcel >= 1.8.0
    php_zip(如果需要处理 .xlsx, .ods, .gnumeric 文件,需要此扩展)
    php_xml
    php_gd2(如果需要精确的自动计算列宽,需要此扩展)

    2.导入
    1>导入文件
    Excel::load('file.xls');
    Excel::load('file.xls', function($reader){

    })
    回调函数可选

    2>ExcelFile injections(注入)
    应该是参照Laravel5.0的FormRequest注入,Excel提供了ExcelFile注入
    1)ExcelFile类
    class UserListImport extends MaatwebsiteExcelFilesExcelFile
    {
    public function getFile()
    {
    return storage_path('exports') . '/file.csv';
    }

    public function getFilters()
    {
    return [
    'chunk'
    ];
    }
    }
    getFile() - 返回要导入的excel的文件名及路径。
    getFilters() - 可以启用各种 'filter'(过滤器)
    getFile()如果想动态获取用户上传的文件,可以参考下方:
    public function getFile()
    {
    // Import a user provided file
    $file = Input::file('report'); // 文件上传
    $filename = $this->doSomethingLikeUpload($file); // 执行上传,得到上传后路径

    // Return it's location
    return $filename; // 返回上传后路径
    }

    2)使用
    定义好了ExcelFile注入类,可以注入到 构造方法或其他方法
    Class TestController extends Controller()
    {

    // 从这里就很明显知道是个什么意思了
    // public function __construct(Request $request)
    // 我们经常使用Request请求
    public function __construct(UserListImport $import)
    {
    // 获取结果
    $results = $import->get();
    }
    }
    3)CSV配置
    可以定义一些可选的CSV设置项,用类的 'protected' 属性来定义
    protected $delimiter = ',';
    protected $enclosure = '"';
    protected $lineEnding = ' ';
    4)导入处理
    为了完全将Excel导入代码与控制器解耦,可以使用导入处理
    public function importUserList(UserListImport $import)
    {
    $import->handleImport(); // 导入处理
    }
    上面的 'handleImport()' 方法,将会动态调用一个 '类名'.'Handler' 的处理类(以我们定义的 'UserListImport' 为例,就应该是 'UserListImportHandler'),所以我们还得定义 '处理类'
    class UserListImportHandler implements MaatwebsiteExcelFilesImportHandler {

    public function handle(UserListImport $import)
    {
    // 获取结果
    $results = $import->get();
    }
    }
    提示:
    就是将处理结果的方法,又抽离到另一个类中(算是公共方法,而不是仅这个控制器可用)

    3>处理导入结果
    1)获取所有工作表和每个工作表内的所有行
    2种处理方式,都可以:
    1.Excel::load('file.xls', function($reader){})->get();
    2.Excel::load('file.xls', function($reader){
    // 获取所有结果
    $results = $reader->get();
    // all()方法,是对 get()方法的一个包装,工作一致
    $results = $reader->all();
    });
    get()和all(),会返回一个 '工作表集合' 或者 '单个工作表内所有行的集合'(发现只有1张工作表时)
    提示:
    我们可以通过配置:excel.php -> force_sheets_collection = true,强制,即使单个表,也返回 '工作表集合'
    2)表标题
    默认,工作表的第一行为表标题
    $row->firstname;
    注意:
    默认情况下,这些属性会被转换为 'slug'。可以通过配置import.heading来改变默认行为。可选值有:
    true | false | slugged | ascii | numberic | hashed | trans | original
    true 和 slugged 也会被转换为 'ascii',等同于设置了 'ascii'
    3)集合
    工作表(sheets)、行(rows)、单元格(cells)都是集合,只要是通过 'get()' 方法获取后,我们都可以调用 'laravel' 的集合方法
    $reader->get()->groupBy();
    4)获取第一张工作表 或 第一行
    $reader->first();
    注意:
    上面也提到了 'force_sheets_collection' 配置,根据这一配置,excel只有单个工作表时,这个获取的可能是 '第一张工作表' 或 '第一行'
    5)工作簿(excel文件)和工作表(sheets)标题
    $reader->getTitle(); // excel文件名
    foreach($reader as $sheet)
    {
    $sheetTitle = $sheet->getTitle(); // 工作表名
    }
    6)限制文件读取
    1.获取行
    $reader->takeRows(10);
    $reader->limitRows(10);
    2.跳过行(偏移)
    $reader->skipRows(10); // 跳过10行
    $reader->limitRows(false, 10); // 跳过10行,但不进行行限制,读取剩余所有行
    $reader->skipRows(10)->takeRows(10); // 跳过10行,并读取10行
    3.获取列
    $reader->takeColumns(10);
    $reader->limitColumns(10);
    4.跳过列(偏移)
    $reader->skipColumns(10); // 跳过10列
    $reader->limitColumns(false, 10); // 跳过10列,但不进行列限制,读取剩余所有列
    $reader->skipColumns(10)->takeColumns(10); // 跳过10列,并读取10列
    7)结果转换
    默认获取的是一个集合
    1)转换为数组
    $reader->toArray();
    2)转换为对象
    $reader->toObject();
    8)打印结果
    $reader->dump(); // 打印结果
    $reader->dd(); // 打印结果,并退出
    9)迭代结果
    $reader->each(function($sheet){ // 循环所有工作表
    $sheet->each(function($row){ // 循环单个工作表,所有行

    });
    });
    提示:
    也可使用 foreach() 来循环结果集
    4>选择工作表和列
    1)选择指定的工作表
    Excel::selectSheets('sheet1')->load();
    2)选择多个工作表
    Excel::selectSheets('sheet1', 'sheet2')->load(); // 也可以传递一个数组 ['sheet1', 'sheet2']
    3)通过下标选择工作表(index 从 0 开始)
    Excel::selectSheetsByIndex(0)->load();
    Excel::selectSheetsByIndex(0, 1)->load();
    4)选择列
    1.$reader->select(['firstname', 'lastname'])->get();
    2.$reader->get(['firstname', 'lastname']);
    注意:
    所有的获取结果方法(例如:all(), first(), dump(), toArray(), ...),都接收一个 '列数组' 参数
    5>日期
    默认情况下,日期将被解析为一个 'Carbon' 对象(这个可以了解下,是composer的一个日期处理包).
    可配置 dates.enabled = false,禁用日期格式(对整个项目生效)
    1)单个导入,开启/禁用日期格式化,使用 '->formatDates($boolean, $format)'
    $reader->formatDates(true); // 启用
    $reader->formatDates(false); // 禁用
    $reader->formatDates(true, 'Y-m-d'); // 启用,并设置日期格式
    2)日期格式
    默认,日期并未格式化,但是返回一个 'Carbon' 对象,我们有2种方式,来格式化日期:
    1.先用过 'get()' 等方法获取结果后,再格式化
    $rows->each(function($row){
    $created_at = $row->created_at->format('Y-m-d'); // 获取到的$row->created_at,已经是一个 'Carbon' 对象
    });
    2.设置一个默认的日期格式
    1>在 excel.php 配置文件中,设置日期格式,则不会再返回 'Carbon' 对象
    2>或者,我们仅在本次导入设置日期格式,$reader->setDateFormat('Y-m-d');
    3)设置自定义日期列
    不是Excel格式日期的单元格不会被解析为日期。我们可以设置哪些字段,来手动格式化为日期格式。
    $reader->setDateColumns(['created_at', 'updated_at'])->get();
    6>计算公式
    默认情况下,文件内的公式会被计算,并返回结果。
    可配置 import.calculate 来改变默认行为。
    1)import.calculate = false
    2)仅在单次导入时,设置
    $reader->calculate([fals]); // 禁用
    $reader->calculate(true); // 启用
    7>自定义单元格值(例如:统一添加前缀,替换敏感词为 '*'等,处理单元格的值)
    看文档
    8>缓存和单元格缓存
    1)单元格缓存
    在 excel.php 中,配置 '单元格缓存'。默认开启缓存,并使用 '内存缓存'
    2)缓存excel文件结果集
    记录结果集,可使用 remember($minutes) 方法。下次载入同样文件时(如果它还在缓存中),将返回缓存的结果
    $results = $reader->remember(10)->get(); // 缓存10分钟
    9>分块导入
    1)当导入大文件时,最好的解决方法是 '分块导入'。可通过 filter('chunk') 来开启;并且使用 'chunk($size, $callback)' 来代替 'get()' 获取结果集。
    Excel::filter('chunk')->load('file.csv')->chunk(250, function($results)
    {
    // 处理结果集
    foreach($results as $row){
    }
    });

    2)ExcelFile 注入实例:
    class UserListImport extends MaatwebsiteExcelFilesExcelFile
    {
    public function getFile()
    {
    return storage_path('exports') . '/file.csv';
    }

    public function getFilters()
    {
    return [
    'chunk' // 使用 'chunk' 过滤器
    ];
    }
    }

    public function importUserList(UserListImport $import) // 注入 ExcelFile
    {
    $import->chunk(250, function($results)
    {
    });
    }
    3)分块导入,队列
    如果我们在配置文件中,启用了队列驱动,会自动将每个分块放入队列
    如果不想使用该功能,设置第3个参数为false
    chunk($size, $callback, false)
    如果想使用 '非默认工作队列',设置第3个参数为 '指定的工作队列名'
    chunk($size, $callback, $shouldQueue)
    10>批量导入
    1)导入目录下的所有文件,仅 '.xls, .xlsx, .csv' 后缀的文件
    Excel::batch('app/storage/uploads', function($row, $file){
    // 处理目录下的导入文件的每一行
    $rows->each(function($row){
    dd($row->firstname);
    });
    });
    2)导入多个文件
    $files = ['1.xls', '2.xls'];
    Excel::batch($files, function($row, $file){

    })
    3)导入目录|多个文件,每个文件包含多个工作表
    Excel::batch('app/storage/uploads', function($sheets, $file){
    $sheets->each(function($sheet){

    });
    });
    11>设置导入配置
    当使用高级Excel文件(例如:没有任何标题列)时,导入这些文件可能很复杂。使用 byConfig() 来处理这类问题
    关联 excel.php 配置文件的 import.sheets 配置
    Excel::load('file.xls')->byConfig('excel::import.sheets', function($sheet){
    // 获取excel.php的import.sheets配置项的 'firstname' 配置
    $firstname = $sheet->firstname;
    });
    注意:
    如果正在使用多张工作表,byConfig() 将会作用于每张表。如果只存在于一张表中,可以使用 'selectSheets()' 来选取指定的工作表
    13>编辑现有的文件
    通过加载现有的Excel文件,修改后再导出,来编辑现有的文件。
    Excel::load('file.csv', function($file){
    // 修改
    })->export('csv');
    14>转换
    通过 'convert()' 转换文件类型
    Excel::load('file.csv', function($file){
    // 修改
    })->convert('xls');
    15>其他
    1)禁止使用第一行作为集合属性
    默认情况下,我们将使用文件的第一行作为表标题(也作为集合的属性名)。
    可以修改 excel.php 的配置项 import.heading,来改变默认行为。
    $reader->noHeading(); // 仅在本次改变默认行为
    2)设置单元格名字分隔符
    默认情况下,集合属性名为第一行。空格将被转换为 '_'。例如:Created at --> created_at
    可以修改 excel.php 的配置项 import.separator,来改变默认行为。
    $reader->setSeparator('-''); // 仅在本次改变默认行为
    3)忽略空单元
    默认空单元不会被忽略,在单元格集合中显示为null
    可以修改 excel.php 的配置项 import.ignoreEmpty,来改变默认行为。
    $reader->ignoreEmpty(); // 仅在本次改变默认行为
    4)输入编码
    默认是 UTF-8
    Excel::load('1.csv', function($reader){ // 使用闭包

    }, 'UTF-8');
    Excel::load('1.csv', 'UTF-8'); // 不使用闭包
    5)CSV设置
    查看 excel.php csv等配置


    3.导出
    1>简单的Excel导出
    1)基本
    Excel::create('文件名');
    Excel::create('文件名', function($excel){ // 使用闭包
    // 调用 写方法
    });
    2)改变属性
    可以在闭包内,改变一些属性。它们中的大多数是默认设置。可查看默认配置:
    app/config/packages/maatwebsite/excel/config.php
    Excel::create('文件名', function($excel){ // LaravelExcelWriter
    $excel->setTitle('聘学兼优会员表'); // 设置标题
    $excel->setCreator('xxx')
    ->setCompany('yyy'); // 链式调用
    $excel->setDescription('描述'); // 单个调用,设置描述
    });
    2>导出
    下载创建的excel文件,使用 'export($ext)' 或 'download($ext)'
    1)导出为 Excel5(xls)
    Excel::create('文件名', function($excel){

    })->export('xls'); // 或 ->download('xls');
    2)导出为 Excel2007(xlsx)
    export('xlsx');
    3)导出为 CSV
    export('csv');
    注意:
    还可以在配置文件内设置默认的 'enclosure' 和 'delimiter'
    4)导出为 PDF
    为了支持导出为pdf格式,composer需要安装任意一种
    "dompdf/dompdf": "~0.6.1"
    "mpdf/mpdf": "~6.1"
    "tecnick.com/tcpdf": "~6.0.0"
    并且配置文件中,配置 pdf.driver
    3>NewExcelFile injections(注入)
    1)NewExcelFile 类
    class UserListExport extends MaatwebsiteExcelFilesNewExcelFile {
    public function getFilename()
    {
    return 'filename'; // 定义想要的文件名
    }
    }
    2)使用
    定义好了NewExcelFile注入类,可以注入到 构造方法或其他方法
    class ExampleController extends Controller {
    public function exportUserList(UserListExport $export) // 注入
    {
    // work on the export
    return $export->sheet('sheetName', function($sheet)
    {

    })->export('xls');
    }
    }
    3)导出处理
    为了完全将Excel导出代码与控制器解耦,可以使用导出处理
    class ExampleController extends Controller {
    public function exportUserList(UserListExport $export)
    {
    // 处理导出
    $export->handleExport();
    }
    }
    上面的 'handleExport()' 方法,将会动态调用一个 '类名'.'Handler' 的处理类(以我们定义的 'exportUserList' 为例,就应该是 'exportUserListHandler'),所以我们还得定义 '处理类'
    class exportUserListHandler implements MaatwebsiteExcelFilesExportHandler {

    public function handle(UserListExport $export)
    {
    return $export->sheet('表单名', function($sheet){

    })->export('xls');
    }
    }
    4>存储到服务器
    将创建的excel文件,保存到服务器,使用 'store($ext, $path = false, $returnInfo = false)' 或 'save()'
    1)导出到默认路径,默认是 'storage/exports' 目录。可修改 excel.php 的 export.store.path
    Excel::create('文件名', function($excel){

    })->store('xls');
    2)导出到指定路径
    ->store('xls', storage_path('excel/exports'));
    3)存储并导出
    ->store('xls')->export('xls');
    4)存储并返回存储信息
    ->store('xls', false, true); // 设置第3个参数为 true
    也可在 excel.php 设置 export.store.returnInfo,进行全局默认配置
    返回的信息有:
    full - 文件全路径
    path - 路径,不含文件名
    file - 文件名
    title - 文件标题
    ext - 文件后缀
    注意:
    确保目录有写权限!
    5>工作表
    1)创建一个工作表
    Excel::create('文件名', function($excel){
    $excel->sheet('工作表名', function($sheet){

    });
    })->export('xls');
    2)创建多个工作表
    Excel::create('文件名', function($excel){
    $excel->sheet('表1', function($sheet){

    });
    $excel->sheet('表2', function($sheet){

    });
    })->export('xls');
    3)改变属性
    可以在闭包内,改变一些属性。它们中的大多数是默认设置。可查看默认配置:
    app/config/packages/maatwebsite/excel/config.php
    Excel::create('文件名', function($excel){
    $excel->sheet('工作表名', function($sheet){
    $sheet->setOrientation('landscape'); // 设置横向属性
    });
    })->export('xls');
    4)默认页边距
    excel.php 设置 export.sheets.page_margin 来设置页边距,可选值有:false | 单个值 | 数组
    也可使用 setPageMargin(),仅在本次导出设置
    $sheet->setPageMargin([0.25, 0.30, 0.25, 0.30]); // 上、右、下、左
    $sheet->setPageMargin(0.25);
    5)设置工作表密码
    // 默认保护
    $sheet->protect('密码');
    // 高级保护
    $sheet->protect('密码', function(PHPExcel_Worksheet_Protection $protection){
    $protection->setSort(true);
    });
    6>从数组中创建工作表
    1)数组
    1.使用 fromArray()
    Excel::create('Filename', function($excel) {
    $excel->sheet('Sheetname', function($sheet) {
    $sheet->fromArray(array(
    array('data1', 'data2'),
    array('data3', 'data4')
    ));
    });
    })->export('xls');
    2.也可使用 with() 替代 fromArray()
    $sheet->with();
    3.在closure(闭包)内,调用,使用 'use()'
    $data = [
    ['xxx', 'yyy'],
    ['111', '222'],
    ];

    /*
    注意:
    闭包想要使用外部的变量,必须使用 'use()' 来引入
    */

    Excel::create('Filename', function($excel) use($data){
    $excel->sheet('Sheetname', function($sheet) use($data){
    $sheet->fromArray($data);
    });
    })->export('xls');
    2)空比较
    默认情况下,0显示为空单元格。设置第4个参数为true,来改变默认行为
    全局修改:export.sheets.strictNullComparison
    单次修改:$sheet->fromArray($data, null, 'A1', true); // 0显示0,而非空
    3)Eloquent模型
    使用 fromModel($model)
    4)自动生成标题
    默认情况下,导出将使用数组的键(或模型属性名)作为第一行(标题列)
    全局修改:excel.php 的export.generate_heading_by_indices
    单次修改:$sheet->fromArray($data, null, 'A1', false, false); // 设置第5个参数
    7>行操作
    1)操作单个行
    1.改变单元格值
    $sheet->row(1, ['11', '22']); // 操作第一行
    $sheet->row(2, ['33', '44']); // 操作第二行
    2.操作行单元格样式
    $sheet->row(1, function($row){
    $row->setBackground('#000'); // 设置单元格北京
    });
    2)追加行
    $sheet->appendRow(2, [55, 66]); // 第二行后,追加新行
    $sheet->appendRow([55, 66]); // 追加新行到最后一行
    3)前追加行
    $sheet->prependRow(2, [55, 66]); // 第二行前,追加新行
    $sheet->prependRow([55, 66]); // 追加新行到第一行
    4)追加多行
    $sheet->rows([
    [77, 88],
    [99, 1010],
    ]);
    8>单元格操作
    1)设置单元格的值
    $sheet->cell('A1', function($cell){
    $cell->setValue('1111');
    });
    $sheet->cell('A1:A5', function($cells){
    // 设置该范围内单元格
    });
    2)设置单元格背景
    $cells->setBackground('#000');
    3)设置单元格字体
    $cells->setFontColor('#fff'); // 颜色
    $cells->setFontFamily('Calibri'); // 字体
    $cells->setFontSize(16); // 大小
    $cells->setFontWeight('bold'); // 粗体
    $cells->setFont([ // 一次性设置
    'family' => 'Calibri',
    'size' => 16,
    'bold' => true,
    ]);
    4)设置边框,上、右、下、左
    $cells->setBorder('solid', 'none', 'none', 'solid');
    $cells->setBorder([
    'top' => [
    'style' => 'solid',
    ],
    ]);
    5)设置水平居中
    $cells->setAligment('center');
    6)设置垂直居中
    $cells->setValigment('center');
    9>工作表样式
    1)一般样式
    $sheet->setStyle([
    'font' => [
    'name' => 'Calibri',
    'size' => 15,
    'bold' => true,
    ];
    ]);
    2)字体
    1.批量设置
    $sheet->setFont([
    'name' => 'Calibri',
    'size' => 15,
    'bold' => true,
    ]);
    2.分开设置
    $sheet->setFontFamily('Calibri');
    $sheet->setFontSize(15);
    $sheet->setFontBold(true);
    3)边框
    1.设置所有边框
    $sheet->setAllBorders('thin');
    2.设置某个单元格的边框
    $sheet->setBorder('A1', 'thin');
    3.设置某个范围内单元格的边框
    $sheet->setBorder('A1:F10', 'thin');
    注意:
    参考文档,查看可用的边框样式
    10>冻结行、列、单元格
    $sheet->freezeFirstRow(); // 冻结第一行
    $sheet->freezeFirstColumn(); // 冻结第一列
    $sheet->freezeFirstRowAndColumn(); // 冻结第一行和第一列
    $sheet->setFreeze('A2'); // 冻结A2单元格
    11>自动过滤器
    开启自动过滤器,使用 setAutoFilter($range = false)
    $sheet->setAutoFilter(); // 作用整张工作表
    $sheet->setAutoFilter('A1:E10'); // 作用某个范围的单元格
    12>单元格尺寸
    1)设置列宽
    $sheet->setWidth('A', 5); // 设置单个列
    $sheet->setWidth([ // 设置多个列
    'A' => 5,
    'B' => 10,
    ]);
    2)设置行高
    $sheet->setHeight(1, 50); // 设置单个行
    $sheet->setHeight([ // 设置多个行
    1 => 50,
    2 => 25,
    ]);
    3)设置单元格尺寸
    $sheet->stSize('A1', 500, 50); // 设置单个单元格
    $sheet->setHeight([ // 设置多个单元格
    'A1 => [
    'width' => 50,
    'height' => 500,
    ],
    'B2' => [
    'width' => 20,
    'height' => 200,
    ],
    ]);
    13>自动调整大小
    默认情况下导出的文件自动调整大小。若要更改此行为,可以更改配置 或 使用设置程序
    $sheet->setAutoSize(true); // 启用
    $sheet->setAutoSize(false); // 禁用
    $sheet->setAutoSize([ // 禁用 'A、C' 列
    'A', 'C'
    ]);
    全部配置:excel.php 的 autosize 和 autosize-method
    14>合并列
    1)合并某个范围的单元格
    $sheet->mergeCells('A1:E1');
    2)合并行和列
    $sheet->setMergeColumn([
    'columns' => ['A', 'B', 'C', 'D'],
    'rows' => [
    [2, 3],
    [4, 5],
    ],
    ]);
    15>列格式化
    可以使用 'setColumnFormat($array)',告诉Excel应该如何解释某些列
    $sheet->setColumnFormat([ // 百分比展示
    'C' => '0%'
    ]);
    $sheet->setColumnFormat([ // 前导0展示
    'A2:K2' => '0000'
    ]);
    $sheet->setColumnFormat([ // 其他格式展示
    'B' => '0',
    'D' => '0.00',
    'F' => '@',
    'F' => 'yyyy-mm-dd',
    ]);
    注意:
    参考文档,查看可用的格式
    16>调用 PHPExcel 的原生方法
    可以在 $excel 和 $sheet 对象上,调用 'PHPExcel' 的原生方法
    1)调用 'excel文件' 方法
    $excel->getDefaultStyle();
    2)调用 '工作表' 方法
    $sheet->protectCells('A1', $password);
    可以到 PHPOffice 获取等多原生方法
    https://github.com/PHPOffice/PHPExcel


    4.利用laravel的 blade 模板引擎,来进行Excel导出,每个工作表加载一个视图,在视图中创建一个HTML表格,设置基本的样式。意思就是:我们写一个表格的模板,然后将这个模板直接载入到Excel进行处理
    1>一个工作表,加载一个视图
    Excel::create('文件名', function($excel) {
    $excel->sheet('工作表名', function($sheet) {
    $sheet->loadView('folder.view'); // 载入视图
    });
    });
    2>不同的工作表,使用不同视图
    Excel::create('文件名', function($excel) {
    $excel->sheet('工作表1', function($sheet) {
    $sheet->loadView('view1'); // 载入视图
    });
    $excel->sheet('工作表2', function($sheet) {
    $sheet->loadView('view2'); // 载入视图
    });
    });
    3>所有工作表,共享一个视图
    Excel::shareView('view')->create();
    4>当我们使用共享视图时,在当前工作表中,不想使用视图,使用 'unsetView()' 来取消
    $sheet->unsetView();
    5>给视图传参
    1)作为第二个参数传递
    $view_data = [
    'name' => 'dongxuemin',
    'age' => 30,
    ];
    $sheet->loadView('view', $view_data);
    2)使用 with() 方法
    $sheet->loadView('view')->with('name', 'dongxuemin')
    ->with('age', 30);
    3)使用 '动态with()' 方法
    $sheet->loadView('view')->withName('dongxuemin')
    ->withAge(30);
    强调!!!
    这其实就是laravel模板传参的3种方法!
    6>设置工作表样式
    1)参照excel导出的设置样式的方法
    2)使用PHPExcel设置样式的方法
    $sheet->getStyle('A1')->applyFromArray([
    'fill' => [
    'type' => PHPExcel_Style_Fill::FILL_SOLID,
    'color' => ['rgb' => 'FF0000'],
    ],
    ]);
    3)使用HTML标签
    laravel-excel 扩展,定义了很多html标签的解析,以及标签的默认样式,我们可以在配置文件中修改
    excel.php 的 views.styles 配置项
    4)使用HTML属性,支持一些基本属性
    <html>
    <!-- 水平对齐 -->
    <td align="right">Big title</td>

    <!-- 垂直对齐 -->
    <td valign="middle">Bold cell</td>

    <!-- 行跨度 -->
    <td rowspan="3">Bold cell</td>

    <!-- 列跨度 -->
    <td colspan="6">Italic cell</td>

    <!-- 宽 -->
    <td width="100">Cell with width of 100</td>

    <!-- 高 -->
    <td height="100">Cell with height of 100</td>
    </html>
    5)使用内联样式
    <td style="background-color: #000">Cell</td>
    6)使用外部样式表
    excel.css:
    .cell {
    color: #fff;
    }
    tr td {
    color: #f00;
    }
    view:
    <html>
    {{ HTML::style('excel.css') }} // 引入外部css文件
    <tr>
    <td class="cell">Cell</td>
    </tr>
    </html>
    注意:
    建议<head>包含 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">,解决编码问题



    5.参考指南
    可用的文件属性
    可用的工作表属性
    可用的CSS样式
    可用的边框样式
    可用的列格式
    闭包
    http://www.maatwebsite.nl/laravel-excel/docs/reference-guide

  • 相关阅读:
    C# 验证IP地址、Email格式、URl网址
    如何创建、安装和调试Windows服务
    C#发送Email邮件方法总结
    C#调用java类、jar包方法。
    未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
    在已经存在的表上创建索引
    Windows下的.NET+ Memcached安装
    把表从Access2007导出到Sql Server
    FusionCharts参数说明
    Sublime Text 3 之配置package control
  • 原文地址:https://www.cnblogs.com/phpk/p/10923079.html
Copyright © 2020-2023  润新知