nkostadinov/yii-eexcelview

Yii 扩展,提供 CGridView 替换,并支持导出到不同类型。

安装: 245

依赖: 0

建议者: 0

安全: 0

星星: 16

观察者: 7

分支: 19

开放问题: 2

类型:yii-extension

dev-master 2020-05-02 09:08 UTC

This package is auto-updated.

Last update: 2024-08-29 05:24:46 UTC


README

这是 PHPSpreadsheet 的包装器,从 CGridView 扩展而来。主要思想是轻松地将已定义的网格导出到 Excel 文件。您可以使用与网格相同的参数数组,以及额外的特定参数,这些参数是:

用法

用法类似于使用 CGridView

$this->widget('EExcelView', array(
     'dataProvider'=> $dataprovider,
     'title' => 'Title',
     'autoWidth' => false,
     'template' => "{summary}\n{items}\n{exportbuttons}\n{pager}",
      ... other options ...
));

如果您没有在导入数组中放置扩展(以下安装步骤 4),那么您需要在 widget 调用上方添加以下内容

Yii::import('ext.EExcelView');

您可以传递的选项

文档属性

  • creator - 文档的创建者
  • title - Excel 文档的标题
  • subject, description, category

其他参数

  • exportType - 要导出的文件类型 - 默认为 xls。这些是 PHPSpreadsheet 编写器类型:Xls, Xlsx, Ods, Csv, Html, Tcpdf, Dompdf, Mpdf。也可以作为 GET 变量传递
  • autoWidth - 是否自动扩展单元格以适应内容(默认 true)
  • disablePaging - 如果设置为 true,则将导出所有数据(默认 true)
  • filename - 要导出的文件名完整路径。如果为 null,则将流式传输到浏览器
  • stream - true/false 将流式传输到浏览器或保存到文件。
  • grid_mode - 是否显示网格或将其导出到所选格式。可能的值(grid, export)
  • grid_mode_var - 默认为 'grid_mode' GET 变量用于网格模式
  • sheetTitle - 当前工作表的标题。默认为 Sheet1
  • rtl_sheet - 是否将工作表设置为从右向左

要求

Yii 1.1, Composer。

安装

步骤 1 - 创建/更新您的 composer.json 文件

运行 composer require nkostadinov/yii-eexcelview

在 protected/ 目录内创建或更新您的 composer.json。在那里,将以下行添加到 composer.json 的 require 部分

  "require": {
    ...
    "phpoffice/phpspreadsheet": ">= 1.10.1"
    ...
  },

然后运行 composer update。

### 步骤 2 - 添加 composer 的自动加载器(如果您尚未这样做)

在您的入口点(项目的根目录中的 index.php)中,在 require_once 'Yii framework' 之前添加

// Autoload including composer
require_once(__DIR__ . '/protected/vendor/autoload.php');

步骤 3 - 下载并安装此扩展

下载此扩展并将其放入 extensions/EExcelView 文件夹。

步骤 4.(可选)将配置文件路径添加到

在您的配置文件导入部分添加以下内容

[php]

		// autoloading model and component classes
		'import'=>array(
			.............
			'ext.EExcelView.*',
		),

发行说明

ver 0.4

  • 迁移到使用 PHPSpreadsheet 而不是 PHPExcel
  • 迁移到使用 composer

ver 0.32

  • 修复了 CButtonColumn 错误 "属性 "CButtonColumn"."name" 未定义"...
  • 修复了多级缓冲问题(le top)
  • 修复了导出按钮列错误(le top)
  • 在扩展页面中添加了所有属性的文档。

ver 0.31

主要是一个错误修复版本。我还修改了扩展,使其能够在控制台模式下运行(尽管它是一个 widget)。我真正需要能够发送 xls 报告的东西。以下是一个代码片段

[php]
  	$factory = new CWidgetFactory();	
		$widget = $factory->createWidget($this, 'EExcelView', array(
			'dataProvider'=>$provider,
			'grid_mode'=>'export',
			'title'=>'Title',
			'filename'=>'report.xlsx',
			'stream'=>false,
			'exportType'=>'Excel2007',
			'columns'=>array(
				'col1',
				'col2',
			),
		));
		
		$widget->init();
		$widget->run();

ver 0.3

主要变更:EExceView 现在可以完全替代 CGridView。存在一个可选参数 'gridmode'(默认为 "grid"),当未设置时,其行为就像正常的网格。如果 gridmode="export",则将所选的网格以 "exportType"(默认为 "Excel5")导出。现在可以通过 "libPath" 变量自定义 PHPExcel 的路径。如果找不到库,将生成警告并禁用导出。

  • 新增:"gridmode" 的可能值(grid, export)。当设置为 grid 时,类似于正常网格。
  • 新增:"libPath" 属性,默认为 "application.extensions.phpexcel.Classes.PHPExcel"。PHP Excel 库的位置。
  • 新增:"grid_mode_var" GET 变量名,可用于更改网格模式。默认为 "grid_mode"。
  • 新增:新的模板项目 "exportbuttons",用于渲染导出链接。示例:...'template'=>"{summary}\n{items}\n{exportbuttons}\n{pager}"....
  • 新增:导出按钮的配置。"exportButtonsCSS"(默认为 "summary")是包裹按钮的 div 的 CSS 类。 "exportButtons" - 导出类型数组,对于每个项目,它渲染一个导出网格的链接。如果您指定了一个数组,您可以自定义链接的标题。所有导出类型都有默认标题。示例:array('Excel5'=>array('caption'=>'*.xls'), PDF)。属性 exportText 定义链接前的文本,默认 = "导出到:"。
  • 新增:渲染 CLinkColumns。只是链接的文本。
  • 新增:支持页脚,类似于正常页脚。
  • 新增:在单元格处理完毕后调用回调函数。$cell 是 PHP Excel 单元格对象。有关帮助,请参阅 PHP Excel 文档。$data 是网格用于表达式的相同变量。$value 是扩展放入单元格的文本。
  1. onRenderHeaderCell(PHPExcel_Cell $cell, string $value)
  2. onRenderDataCell(PHPExcel_Cell $cell, $data, string $value)
  3. onRenderFooterCell(PHPExcel_Cell $cell, string $value)

感谢所有给我写信提出如何扩展此扩展的想法的人。抱歉,我最近真的很忙,所以没有时间早点带来这个。我已经测试了这个扩展,但如果您发现任何错误或想让我添加的功能,请随时写信。快乐的一周:)

版本 0.2

  • 修复:保存到文件名时出错。
  • 修复:当索引 > 26 时的列索引错误。
  • 新增:支持 CSV。
  • 新增:新的参数 "stream"(默认为 true),当设置为 true 时,将数据流到浏览器,否则保存到本地文件名。
  • 新增:获取真实列标题。
  • 新增:当未指定时,从页面标题获取标题。