anklimsk/ cakephp-spreadsheet
使用 CakePHP 2.x 生成 MS Excel 文件
v1.0.3
2020-04-02 17:00 UTC
Requires
- php: >=5.4
- anklimsk/cakephp-basic-functions: ^1.0.0
- anklimsk/cakephp-extended-test: ^1.0.0
- composer/installers: ^1.5.0
README
使用 CakePHP 生成 MS Excel 文件
此插件提供以下功能
- 生成 MS Excel 文件
安装
-
使用 composer 安装插件:
composer require anklimsk/cakephp-spreadsheet
-
将以下行添加到文件
app/Config/bootstrap.php
的末尾CakePlugin::load('CakeSpreadsheet', ['bootstrap' => true, 'routes' => true]);
使用此插件
-
在您的
Model
-
创建以下方法
public function getExportConfig() { $header = [__('Field label 1'), __('Field label 2'), __('Field label 3'), __('Field label 4')]; $width = [35, 20, 10, 15]; $align = ['L', 'L', 'C', 'R']; $fileName = __('Export file'); return compact('header', 'width', 'align', 'fileName'); } public function getExportData($conditions = []) { ... $result = [ 'Group header (List name)' => [ 'Sub header' => [ [ 'Field value 1', 'Field value 2', 'Field value 3', 'Field value 4', ] ] ] ]; return $result; }
-
-
在您的
Controller
-
将
RequestHandler
组件添加到AppController
,并将xlsx
映射到 CakeSpreadsheet 插件,例如public $components = [ ..., 'RequestHandler' => [ 'viewClassMap' => [ 'xlsx' => 'CakeSpreadsheet.Spreadsheet' ] ] ];
-
将以下内容添加到控制器操作中
public export($id = null) { if (!$this->RequestHandler->prefers('xlsx')) { throw new BadRequestException(__('Invalid export type'); } $conditions = []; if (!empty($id)) { $conditions['Model.id'] = $id; } $exportConfig = $this->Model->getExportConfig(); $exportData = $this->Model->getExportData(); $this->set(compact('exportConfig', 'exportData')); }
-
-
在您的
View
-
创建指向具有扩展名
.xlsx
的动作的链接,例如$this->Html->link('Excel file', ['ext' => 'xlsx']);
-
将视图模板放在子目录
Spreadsheet
中,例如:app/View/Invoices/Spreadsheet/index.ctp
if (isset($fileName)) { $this->setFileName($fileName); } $this->Spreadsheet->getDefaultStyle()->applyFromArray([ 'font' => [ 'name' => 'Arial Cyr', 'size' => 10, ], ]);
-
在您的视图文件中使用
CakeSpreadsheet.exportExcelTable
元素,例如echo $this->element('CakeSpreadsheet.exportExcelTable', compact('exportConfig', 'exportData'));
-