harborcompliance / cakephp-xlsxview
为 CakePHP 定制的 XLSX 查看类
dev-main
2022-02-03 17:21 UTC
Requires
- php: >=7.2
- cakephp/cakephp: ^4.0
- phpoffice/phpspreadsheet: ^1.21
This package is auto-updated.
Last update: 2024-09-29 06:14:42 UTC
README
安装
您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。
安装 composer 包的推荐方法是
composer require harborcompliance/cakephp-xlsxview
启用插件
通过运行以下命令加载插件:
bin/cake plugin load XlsxView
用法
将数组写入 xlsx 文件的基本示例。
public function export() { $data = [ ['id' => 1, 'name' => 'Alex', 'email' => 'alex@example.com'], ['id' => 2, 'name' => 'Jason', 'email' => 'jason@example.com'], ]; $this->set(compact('data')); $this->viewBuilder() ->setClassName('XlsxView.Xlsx') ->setOption('serialize', 'data'); }
您可以选择指定一个可选的标题,该标题将成为您 xlsx 文件的第一个行。
public function export() { $data = [ ['id' => 1, 'name' => 'Alex', 'email' => 'alex@example.com'], ['id' => 2, 'name' => 'Jason', 'email' => 'jason@example.com'], ]; $header = ['ID', 'Name', 'Email']; $this->set(compact('data')); $this->viewBuilder() ->setClassName('XlsxView.Xlsx') ->setOptions([ 'serialize' => 'data', 'header' => $header, ]); }
自动视图类切换
您可以使用路由器的扩展解析功能和 RequestHandlerComponent
自动使用 XlsxView 类。
通过在应用的 routes.php
中使用 Router::extensions('xlsx')
或在所需范围内使用 $routes->addExtensions()
启用对所有路由的 xlsx
扩展解析。
// UsersController.php // In your controller's initialize() method: $this->loadComponent('RequestHandler'); // Controller action public function index() { $users = $this->Users->find(); $this->set(compact('users')); if ($this->request->is('xlsx')) { $this->viewBuilder()->setOptions([ 'serialize' => 'users', 'header' => $header, ]); } }
使用上述控制器,现在您可以访问 /users.xlsx
或使用 Accept
头 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
获取 xlsx 文件格式的数据,使用 /users
获取正常 HTML 页面。
设置下载文件名
默认情况下,下载的文件将使用 URL 的最后一部分命名。要显式设置文件名,请使用 Response::withDownload()
方法。
public function export() { // ... $this->response = $this->response->withDownload('users.xlsx'); }