phpnt / yii2-export
Yii2 将数据保存为 xls, csv, word, html, pdf 文件。
0.0.7
2017-05-08 07:06 UTC
Requires
- php: >=5.4.0
- dompdf/dompdf: >=v0.7.0
- phpoffice/phpexcel: >=1.8.1
- phpoffice/phpword: >=v0.12.1
- yiisoft/yii2: *
README
描述
保存数据到 xls, csv, word, html, pdf 文件。如果在视图中使用 Search 模型与 DataProvider 一起输出 GridView 并应用过滤器,则保存的数据也将应用此过滤器。
为 CSV 文件提供了 'UTF-8'(默认)和 'Windows-1251' 编码的选择。
PDF 文件的俄语本地化说明位于 README 文件中,位于 /dompdf_ru 文件夹中。
演示
社交媒体
安装
php composer.phar require "phpnt/yii2-export" "*"
或
composer require phpnt/yii2-export
或在 composer.json 文件中添加
"phpnt/yii2-export": "*"
使用
连接
// в файле настройки приложения (main.php - Advanced или web.php - Basic) добавляется класс в controllerMap ... 'controllerMap' => [ 'export' => 'phpnt\exportFile\controllers\ExportController' ], 'components' => [ ... ],
在任何 Search 模型中
... class GeoCitySearch extends GeoCity { ... // указываются свойства, которые нужно выводить в файлы public function exportFields() { return [ 'id' => function ($model) { /* @var $model User */ return $model->id; }, 'name_ru', 'region_id' => function ($model) { /* @var $model GeoCity */ if (isset($model->region->name_ru)) { return $model->region->name_ru; } return false; }, 'lat', 'lon' ]; } ... }
控制器
... // cоздается стандартное действие для вывода данных public function actionExportFile() { $searchModel = new GeoCitySearch(); $dataProvider = $searchModel->search(\Yii::$app->request->queryParams); return $this->render('export-file', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, ]); } ...
视图 1
use phpnt\exportFile\ExportFile; use yii\grid\GridView; /* @var $searchModel \common\models\GeoCitySearch */ /* @var $dataProvider yii\data\ActiveDataProvider */ // минимальные настройки echo ExportFile::widget([ 'model' => 'common\models\GeoCitySearch', // путь к модели 'searchAttributes' => $searchModel, // фильтр ]) ?> <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ... ] ]); ?>
视图 2
use phpnt\exportFile\ExportFile; use yii\grid\GridView; /* @var $searchModel \common\models\GeoCitySearch */ /* @var $dataProvider yii\data\ActiveDataProvider */ // максимальные настройки echo ExportFile::widget([ 'model' => 'common\models\search\UserSearch', // путь к модели 'title' => 'Заголовок документа', 'queryParams' => Yii::$app->request->queryParams, 'getAll' => true, // все записи - true, учитывать пагинацию - false 'csvCharset' => 'Windows-1251', // кодировка csv файла: 'UTF-8' (по умолчанию) или 'Windows-1251' 'buttonClass' => 'btn btn-primary', // класс кнопки 'blockClass' => 'pull-left', // класс блока в котором кнопка 'blockStyle' => 'padding: 5px;', // стиль блока в котором кнопка // экспорт в следующие файлы (true - разрешить, false - запретить) 'xls' => true, 'csv' => true, 'word' => true, 'html' => true, 'pdf' => true, // шаблоны кнопок 'xlsButtonName' => Yii::t('app', 'MS Excel'), 'csvButtonName' => Yii::t('app', 'CSV'), 'wordButtonName' => Yii::t('app', 'MS Word'), 'htmlButtonName' => Yii::t('app', 'HTML'), 'pdfButtonName' => Yii::t('app', 'PDF') ]) ?> <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ... ] ]); ?>