hzx / excel-dto
快速导出 excel 表格
v1.0.0
2021-09-18 02:39 UTC
Requires
- php: >=7.4
- ext-xlswriter: >=1.3.7
- hyperf/di: 2.1.*
- hyperf/framework: 2.1.*
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.14
- mockery/mockery: ^1.0
- phpstan/phpstan: ^0.12
- phpunit/phpunit: >=7.0
- swoole/ide-helper: dev-master
- swow/swow: dev-develop
- symfony/var-dumper: ^5.1
This package is auto-updated.
Last update: 2024-12-18 09:31:43 UTC
README
通过注解快速导出excel表格,默认使用 xlswriter 进行表格处理
- PHP >= 7.4
- xlswriter 扩展
1、安装
composer require hzx/excel-dto
2、使用
- 定义 Dto 数据对象
- @ExcelData 定义对象名称
- @ExcelProperty 定义属性
use Hzx\ExcelDto\Annotation\ExcelData; use Hzx\ExcelDto\Annotation\ExcelProperty; /** * @ExcelData(name="test") */ class Test { /** * @ExcelProperty(value="用户名", index="0") */ public $name; /** * @ExcelProperty(value="邮箱", index="1") */ public $email; /** * @ExcelProperty(value="经度", index="3") */ public $longitude; /** * @ExcelProperty(value="纬度", index="4") */ public $latitude; }
3、调用
<?php use Hzx\ExcelDto\Annotation\ExportExcel; /** * @ExportExcel(property="test", path="/storage/exports") */ public function test1($filename) { $faker = \Faker\Factory::create(); $data = []; for ($i = 0; $i < 100; $i++) { $data[] = [ 'name' => $faker->name, 'email' => $faker->email, 'longitude' => $faker->longitude, 'latitude' => $faker->latitude, ]; } return $data; } /** * @ExportExcel(property="test", path="/storage/exports") */ public function test2() { $faker = \Faker\Factory::create(); $data = []; for ($i = 0; $i < 100; $i++) { $data[] = [ 'name' => $faker->name, 'email' => $faker->email, 'longitude' => $faker->longitude, 'latitude' => $faker->latitude, ]; } return $data; } $result1 = $this->test1('test.xlsx'); $result2 = $this->test2(); print_r($result1); Array ( [basic] => Array ( [property] => test [path] => /www/poj/storage/exports [group] => local [filename] => test.xlsx [full_path] => www/poj/storage/exports/2021091810/test.xlsx ) [data] => Array ( [0] => Array ( [name] => Loan Officer, [email] => Rylee_Forth2217@twipet.com, [longitude] => 113.23, [latitude] => 23.16, ) ) )