antonyz89 / yii2-export
一个用于将服务器/数据库数据导出为各种格式的库(例如 excel、html、pdf、csv 等)
Requires
- kartik-v/yii2-dynagrid: >=1.4.5
- kartik-v/yii2-mpdf: >=1.0
- phpoffice/phpspreadsheet: >=1.0
README
yii2-export
一个使用 PhpSpreadsheet 库将服务器/数据库数据导出为各种格式(例如 excel、html、pdf、csv 等)的库。小部件允许您配置 dataProvider、列,就像 yii\grid\GridView 一样。然而,它只是以按钮下拉菜单的形式显示导出操作,以便嵌入到任何 GridView 或其他组件中。
此外,从 v1.2.0 版本开始,该扩展还显示了一个方便的网格列选择器,用于控制导出的列。列选择器提供的功能包括
- 显示一个列选择器下拉列表,以允许选择要导出的列。
- 新的
container
属性允许您将导出菜单和列选择器下拉列表分组。 - 新的
template
属性用于操作菜单、列选择器或按钮组中的附加按钮的显示。 - 通过
columnSelectorOptions
配置列选择器下拉按钮。 - 在列选择器中自动生成列标签。但您可以通过
columnSelector
属性设置覆盖每个列键显示的列标签。 - 通过
selectedColumns
预选列(您必须设置所选列键) - 通过
disabledColumns
在列选择器中禁用列(您必须设置禁用列键) - 通过
hiddenColumns
在列选择器中隐藏列(您必须设置隐藏列键) - 通过
noExportColumns
从导出和列选择器中隐藏列(您必须设置不导出列键) - 通过
showColumnSelector
属性切换列选择器的显示 - 仅当
asDropdown
设置为true
时,才显示列选择器。
该扩展提供可配置的用户界面,用于使用视图模板处理高级情况。
exportColumnsView
允许您设置自己的自定义视图文件以渲染列选择器下拉菜单。afterSaveView
允许您设置自己的保存视图文件,如果您正在配置将导出文件保存到服务器。
演示
版本变更
注意:有关各个版本变更的详细信息,请参阅 变更日志。
安装
安装此扩展的首选方法是使用 composer。
注意:阅读此 网络提示/wiki 了解如何设置应用程序的 composer.json 中的
minimum-stability
设置。
运行以下命令之一
$ php composer.phar require kartik-v/yii2-export "@dev"
或添加以下内容
"kartik-v/yii2-export": "@dev"
将 require
部分添加到您的 composer.json
文件中。
注意:您必须运行
composer update
以获取最新稳定依赖项,例如kartik-v/yii2-krajee-base
先决条件
yii2-export
扩展依赖于 yii2-grid
扩展模块。为了开始使用 yii2-export
,您需要确保在您的应用程序模块配置文件中设置了 gridview
模块。例如
'modules' => [ 'gridview' => [ 'class' => 'kartik\grid\Module', // other module settings ] ]
用法
ExportMenu
use kartik\export\ExportMenu; $gridColumns = [ ['class' => 'yii\grid\SerialColumn'], 'id', 'name', 'color', 'publish_date', 'status', ['class' => 'yii\grid\ActionColumn'], ]; // Renders a export dropdown menu echo ExportMenu::widget([ 'dataProvider' => $dataProvider, 'columns' => $gridColumns ]); // You can choose to render your own GridView separately echo \kartik\grid\GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => $gridColumns ]);
在控制台使用 ExportMenu
在控制台中将文件导出到 console/runtime/export
文件夹
namespace console\controllers; use antonyz89\export\ExportMenu; use backend\models\ExampleSearch; use yii\console\Controller; use yii\helpers\ArrayHelper; use yii\helpers\Json; use Yii; class ExampleController extends Controller { public function actionEmail() { Yii::$app->request->setParams([ // fake request 'export_columns' => Json::encode(array_keys(self::getColumns())) ]); $searchModel = new ExampleSearch(); $searchModel->active = 1; $searchModel->account_id = 1; $dataProvider = $searchModel->search([]); $menu = new ExportMenu([ 'title' => Yii::t('app', 'Examples'), 'triggerDownload' => true, 'dataProvider' => $dataProvider, 'exportType' => ExportMenu::FORMAT_EXCEL_X, 'stream' => false, 'deleteAfterSave' => false, 'columns' => self::getColumns() ]); $menu->run(); // see your file in `console/runtime/export` } public static function getColumns() { return [ [ 'label' => Yii::t('app', 'Operator'), 'attribute' => '_user', 'value' => 'obligation.user.email' ], [ 'attribute' => '_company', 'value' => static function (ExampleReport $model) { return "{$model->company->initials} - $model->company"; } ], [ 'attribute' => 'declaration_id', 'value' => 'declaration', ], [ 'attribute' => 'competence', 'value' => 'competenceText' ], [ 'attribute' => 'deadline', 'format' => ['date', 'php:d/m/Y'] ], [ 'attribute' => 'reported_date', 'value' => static function (ExampleReport $model) { return $model->reported_date ? DateHelper::toFormat($model->reported_date, 'Y-m-d H:i:s', 'd/m/Y H:i:s') : Yii::t('app', 'Not submitted'); }, ], [ 'attribute' => 'status', 'value' => 'statusText' ], 'reason_delay' ]; } }
贡献者
代码贡献者
此项目之所以存在,要归功于所有贡献者。[贡献].
财务贡献者
成为财务贡献者,帮助我们维持社区。[贡献]
个人
组织
用您的组织支持此项目。您的标志将在此处显示,并链接到您的网站。[贡献]
许可
yii2-export 在 BSD-3-Clause 许可下发布。有关详细信息,请参阅附带 LICENSE.md
文件。