antonyz89/yii2-export

一个用于将服务器/数据库数据导出为各种格式的库(例如 excel、html、pdf、csv 等)

资助包维护!
Open Collective

安装: 364

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 126

类型:yii2-extension

v1.4.0 2019-05-25 07:08 UTC

README

Krajee Logo
yii2-export Donate

Stable Version Unstable Version License Total Downloads Monthly Downloads Daily Downloads

一个使用 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 文件。