Yii Framework Forum: Ydatagrid,类似Excel的数据表格处理类 - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Ydatagrid,类似Excel的数据表格处理类 数据表的辅助操作、展示类、导出类 Rate Topic: -----

#1 User is offline   YcoeXu 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 03-January 14

Posted 06 January 2014 - 06:30 AM

本扩展是我在一个项目里面大量使用的,感觉用起来还比较方便,就把它分享上来了,除了YModelDataGrid类里面的quickParseXXX()方法外,其它功能都是通用的


功能:
简化表格操作、展示代码(可替代CGridView),支持:
1. %A * %C这样的操作(A列乘以C列)此类操作
2. 增加列、删除列、交换列、排序、合并单元格
3. 设置样式、设置表格数据(使用类)
4. Excel/CVS导出
5. 跟AR快速关联、关联类直接获取...
6. ....



安装:
1、下载附件,解压,将YDataGrid目录复制到{$app_dir}/protected/extensions/下,将css文件复制到网站的css目录
2、yii配置import中添加:application.extensions.YDataGrid.*
3、在页面上引入css文件(用于渲染表格样式,你也可以自己写)


使用:
class StoreNameCell extends YDataGridCell{
    public function render() {
        return Store::getName($this->cell_data); //$this->cell_data表示当前单元格的值
    }
}

//$order_list可以是AR数组,也可以是个数组!
$table = new YDataGrid($order_list, array(
    'columns' => array( //字义列
        'code',
        'name',
        'price',
        'count',
        'store_id',
        'user.name'  //如果此表与user表作了关联,可以直接使用这种方法直接获取到user表的name
    ),
    'key' => array('id', 'status') //指定keys,如果只有一个值时,也可以使用字符
));

$table
->setTitles(array('编码', '名称', '单价', '数量', '门店名称', '操作者')) //设置标题
->render() //可以在每一步都render出来,方便调试
->insertCol(0, 'exp:number_format(%C*%D, 2)', '小计') //在最后插入一列,并将结果保留2位小数
//->render()
->setColumnValues(
    'C' => 'php:number_format($data, 2)', //将第3列数字格式化
    'E' => new StoreNameCell(), //也可以写成:'php:Store::getName($data)'
)
->render();


说明:

列名A/B/C...与Excel类似,A表示第一列,0表示最后一列后,-1列表倒数第一列
%B表示第2列
%B3表示第3行第2列的一个单元格
B:D表示从第二列到第四列
2:4表示第2行到第四行
AB表示第27列

在所有可设置列值、表格值的地方,都可以使用:
exp:可以使用php和带%的YDataGrid表达式,也可以使用$data(表示当前单元格)
php:可用变量$data(表示当前单元格)、$key(初始化时设定的key的第一个值)、$keys[i](初始化时设定的key的第i个值)
Class<? extends YDataGridCell>:扩展了YDataGridCell的类实例(这里使用java的写法比较好表达)

使用YExcelDataGrid/YCSVDataGrid时,需要三方扩展:phpexcel


示例:

test.pos.lingou.com (发不了链接,汗~~~)
测试用户名:r
密码:123456


源码:
github.com/ycoe/YDataGrid

Attached File(s)


0

#2 User is offline   caridy 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 14-March 11

Posted 08 January 2014 - 12:30 AM

非常不错的项目.收藏学习
0

#3 User is offline   Scott_Huang 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 18-July 13

Posted 09 January 2014 - 12:43 AM

Will take a try soon, thanks for your share.
0

#4 User is offline   Scott_Huang 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 18-July 13

Posted 10 January 2014 - 11:39 AM

可以显示表格。 请提供更详细的用法,谢谢。

比如,加入filter?
render(false)时,最左边的的竖线为什么没有显示出来?
html为什么要插入?可否在columns中直接指定?就像类似zii.widgets.grid.CGridView用法。

我有安装phpexcel,如何导出YDataGrid到excel? 下面代码仅列出内容到屏幕。
//$table->toExcelDataGrid() //转换成Excel子类
// ->export('文件名'); //导出Excel

你的HTML/EXCEL/CSV/Model Datagrid如何使用?谢谢。
0

#5 User is offline   YcoeXu 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 03-January 14

Posted 13 January 2014 - 08:04 PM

View PostScott_Huang, on 10 January 2014 - 11:39 AM, said:

可以显示表格。 请提供更详细的用法,谢谢。

比如,加入filter?
render(false)时,最左边的的竖线为什么没有显示出来?
html为什么要插入?可否在columns中直接指定?就像类似zii.widgets.grid.CGridView用法。

我有安装phpexcel,如何导出YDataGrid到excel? 下面代码仅列出内容到屏幕。
//$table->toExcelDataGrid() //转换成Excel子类
// ->export('文件名'); //导出Excel

你的HTML/EXCEL/CSV/Model Datagrid如何使用?谢谢。


1. 这个插件只是为比较单纯的表格使用,不想把它做成像Visual Studio那样,直接拖拉就行的,更多的还是面向html/php写代码,所以不会考虑将filter加入此功能,这样也会让这个插件不够灵活

3. 左边的竖线的问题,这个可以自己在css内添加个样式去渲染,比如table中添加border-right:1px solie red;或者找成用table的background去模拟线条
4. 展出Excel只需要把测试代码中的render()全部注释掉,把后面的toExcelDataGrid()->export()注释打开就可以了
5. 正在写使用文档,迟点写完再放上来
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users