• 报表系统 API接口


     

    复杂报表除了提供上述标准化功能之外,还允许用户通过挂接自定义脚本插件以实现个性化报表需求。自定义脚本插件命名规则是XXX.php,其中XXX代表该报表的id(id可以通过查看编辑报表页面的地址而得到),存放路径为webrootgeneralappbuildermodules eportplugin。用户自定义的脚本插必须实现以下函数:

    /**

    *这里实现个性化报表需求

    *@param $obj_custome_report 代表当前复杂报表对象

    *@return void

    */

    function mydraw($obj_custom_report){

    //按以下方式调用复杂报表接口

    //$obj_custom_report->doCreateSheet(“我的报表”);

    }

    复杂报表处理引擎会在解析执行当前报表逻辑完成之后、最终输出报表之前判断本报表是否挂接有脚本插件,如果有,则包含该脚本文件并调用mydraw方法,并给它传递代表当前复杂报表对象的$obj_custom_report。复杂报表自定义脚本插件举例如下:

    <?
    /**
    *这里实现个性化报表需求
    *@param $obj_custome_report 代表当前复杂报表对象
    *@return void
    */
    function mydraw($obj_custom_report){
    //按以下方式调用复杂报表接口
    //$obj_custom_report->doCreateSheet(“我的报表”);
    $arr_align = ["horizontal" => "left", "vertical" => "center"];//对齐方式
    $arr_border = ["style" => "thin", "color" => ["argb" => "FF000000"]];//
    $arr_Borders = ["left"=>$arr_border, "right"=>$arr_border,"top"=>$arr_border,"bottom"=>$arr_border];// 边框
    $arr_header = ["type"=>"solid", "color"=>["argb"=>"FF0000FF"]];//蓝色 表头背景色
    $arr_odd = ["type"=>"solid", "color"=>["argb"=>"FF00FF00"]];//绿色 奇数行背景数
    $arr_even = ["type"=>"solid", "color"=>["argb"=>"FFFFFF00"]];//绿色 偶数行背景色

    //获得数据集所有数据
    $arr_row = $obj_custom_report->doOpenDataset("人员情况");
    if(!empty($arr_row)){
    $i_col = 0;
    foreach($arr_row[0] as $s_key => $s_val){ //输出表头

    $obj_custom_report->doSetValue(0, $i_col, 1, iconv("GBK", "UTF-8", $s_key));
    $obj_custom_report->doSetBorders(0, $i_col, 1, $arr_Borders);
    $obj_custom_report->doSetFill(0, $i_col, 1, $arr_header);
    $obj_custom_report->doSetAlign(0, $i_col, 1, $arr_align);
    $i_col++;
    }

    $i_row = 2;
    $i_prev_row = 2;
    $s_prev_val = "";
    foreach($arr_row as $row){//输出数据
    $i_col = 0;
    foreach($row as $s_val){
    $obj_custom_report->doSetValue(0, $i_col, $i_row, iconv("GBK", "UTF-8", $s_val));
    $obj_custom_report->doSetBorders(0, $i_col, $i_row, $arr_Borders);
    if($i_row % 2 == 0){
    $obj_custom_report->doSetFill(0, $i_col, $i_row, $arr_even);
    }else{
    $obj_custom_report->doSetFill(0, $i_col, $i_row, $arr_odd);
    }
    $obj_custom_report->doSetAlign(0, $i_col, $i_row, $arr_align);
    if($i_col == 5){
    if($s_prev_val != "" && $s_prev_val != $s_val){
    if($i_prev_row < $i_row - 1){
    $obj_custom_report->doMergeCells(0, 5, $i_prev_row, 5, $i_row - 1);
    }
    $i_prev_row = $i_row;
    }
    $s_prev_val = $s_val;
    }
    $i_col++;
    }
    $i_row++;
    }
    if($i_prev_row < $i_row - 1){
    $obj_custom_report->doMergeCells(0, 5, $i_prev_row, 5, $i_row - 1);
    }
    }
    }
    ?>

    运行结果如下图所示:

    复杂报表对象$obj_custom_report包含有丰富的接口供用户调用以实现个性化报表需求。复杂报表对象包含的API说明如下:

    添加空白工作表

    /**
    * 添加空白工作表
    * @param string $sTitle
    * @param int $iSheetIndex 插入工作表位置(基于0)
    * @return MySheet 新工作表对象
    */
    public function doCreateSheet($sTitle = "", $iSheetIndex = NULL)

    拷贝工作表

    /**
    * 拷贝工作表
    * @param string $sSourceSheetName 待拷贝的工作表名称
    * @param string $sTargetSheetName 新工作表名称
    * @param int $iSheetIndex 插入工作表位置(基于0)
    */
    public function doCopySheet($sSourceSheetName, $sTargetSheetName, $iSheetIndex = NULL)

    删除工作表

    /**
    * 删除工作表
    * @param $iSheetIndex 工作表号(基于0)
    */
    public function doRemoveSheet($iSheetIndex)

    获得工作表号

    /**
    * 获得工作表号
    * @param $sSheetName 工作表名
    * @return int
    */
    public function doGetSheetIndex($sSheetName)

    获得工作表名

    /**
    * 获得工作表名
    * @param $sSheetName 工作表名
    * @return string
    */
    public function doGetSheetName($iSheetIndex)

    删除工作表

    /**
    * 删除工作表
    * @param $sSheetName 工作表名
    */
    public function doRemoveSheetByName($sSheetName)

    获得最大列号

    /**
    * 获得最大列号
    * @param $iSheetIndex 工作表号(基于0)
    * @return int
    */
    public function doGetMaxColumn($iSheetIndex)

    获得最大行号

    /**
    * 获得最大行号
    * @param $iSheetIndex
    * @return int
    */
    public function doGetMaxRow($iSheetIndex)

    获得单元格区间

    /**
    * 获得单元格区间
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @param int $iRow 行号(基于1)
    * @return array ["x1","y1","x2","y2"]
    */
    public function doGetRegion($iSheetIndex, $iColumn = 0, $iRow = 1)

    获得字体信息

    /**
    * 获得字体信息
    * underline: none double doubleAccounting single singleAccounting
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @param int $iRow 行号(基于1)
    * @return array
    */
    public function doGetFont($iSheetIndex, $iColumn = 0, $iRow = 1)

    设置字体信息

    /**
    * 设置字体
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @param int $iRow 行号(基于1)
    * @param array $arrFont 字体信息,参考getFont
    */
    public function doSetFont($iSheetIndex, $iColumn = 0, $iRow = 1, $arrFont = [])

    获得对齐信息

    /**
    * 获得对齐方式
    * 水平对齐:general left right center centerContinuous justify
    * 垂直对齐:bottom top center justify
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @param int $iRow 行号(基于1)
    * @return array
    */
    public function doGetAlign($iSheetIndex, $iColumn = 0, $iRow = 1)

    设置对齐信息

    /**
    * 设置对齐方式
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @param int $iRow 行号(基于1)
    * @param array $arrFont 对齐方式,参考getAlign
    */
    public function doSetAlign($iSheetIndex, $iColumn = 0, $iRow = 1, $arrAlign = [])

    获得单元格边框

    /**
    * 获得单元格边框
    * 对角线方向:const DIAGONAL_NONE = 0; const DIAGONAL_UP = 1; const DIAGONAL_DOWN = 2;const DIAGONAL_BOTH = 3;
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @param int $iRow 行号(基于1)
    * @return array
    */
    public function doGetBorder($iSheetIndex, $iColumn = 0, $iRow = 1)

    设置单元格边框

    /**
    * 设置单元格边框
    * 对角线方向:const DIAGONAL_NONE = 0; const DIAGONAL_UP = 1; const DIAGONAL_DOWN = 2;const DIAGONAL_BOTH = 3;
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @param int $iRow 行号(基于1)
    * @param array $arrBorders: ["left","right","top","bottom","diagonal","diagonaldirection","allborders"]
    */
    public function doSetBorders($iSheetIndex, $iColumn = 0, $iRow = 1, $arrBorders = [])

    获得单元格填充方式

    /**
    * 获得单元格填充方式
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @param int $iRow 行号(基于1)
    * @return array
    */
    public function doGetFill($iSheetIndex, $iColumn = 0, $iRow = 1)

    设置单元格填充方式

    /**
    * 设置单元格填充方式
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @param int $iRow 行号(基于1)
    * @param array $arrFills 格式参考getFill
    */
    public function doSetFill($iSheetIndex, $iColumn = 0, $iRow = 1, $arrFills = [])

    获得单元格数据格式化方式

    /**
    * 获得单元格数据格式化方式
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @param int $iRow 行号(基于1)
    * @return array
    * code值为:General、@、0、0.00、#,##0.00、#,##0.00-、0%、0.00%、yyyy-mm-dd、yy-mm-dd、dd/mm/yy、d/m/y、d-m-y、d-m、m-y、mm-dd-yy、d-mmm-yy、d-mmm、mmm-yy、m/d/yy h:mm、d/m/y h:mm、h:mm AM/PM、h:mm:ss AM/PM、h:mm、h:mm:ss、mm:ss、h:mm:ss、i:s.S、h:mm:ss;@、yy/mm/dd;@、$#,##0.00-、$#,##0-、[$EUR ]#,##0.00-
    */
    public function doGetNumberFormat($iSheetIndex, $iColumn = 0, $iRow = 1)

    设置单元格数据格式化方式

    /**
    * 设置单元格格式化方式
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @param int $iRow 行号(基于1)
    * @param array $arrFormat
    */
    public function doSetNumberFormat($iSheetIndex, $iColumn = 0, $iRow = 1, $arrFormat = [])

    获得列宽度

    /**
    * 获得列宽度
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @return int
    */
    public function doGetColumnWidth($iSheetIndex, $iColumn = 0)

    设置列宽度

    /**
    * 设置列宽度
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @param int $iWidth 宽度
    */
    public function doSetColumnWidth($iSheetIndex, $iColumn = 0, $iWidth = 0)

    获得行高度

    /**
    * 获得行高度
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iRow 行号(基于1)
    * @return int
    */
    public function doGetRowHeight($iSheetIndex, $iRow = 1)

    设置行高度

    /**
    * 设置行高度
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iRow 行号(基于1)
    * @param int $iWidth 宽度
    */
    public function doSetRowHeight($iSheetIndex, $iRow = 1, $iHeight = 0)

    获得列是否可视

    /**
    * 获得列是否可视
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @return boolean
    */
    public function doGetColumnVisible($iSheetIndex, $iColumn = 0)

    设置列是否可视

    /**
    * 设置列是否可视
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 列号(基于0)
    * @param boolean $bVisible 是否可视
    */
    public function doSetColumnVisible($iSheetIndex, $iColumn = 0, $bVisible = false)

    获得行是否可视

    /**
    * 获得行是否可视
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iRow 行号(基于1)
    * @return boolean
    */
    public function doGetRowVisible($iSheetIndex, $iRow = 0)

    设置行是否可视

    /**
    * 设置行是否可视
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iRow 行号(基于1)
    * @param boolean $bVisible 是否可视
    */
    public function doSetRowVisible($iSheetIndex, $iRow = 0, $bVisible = false)

    合并单元格

    /**
    * 合并单元格
    * @param $iSheetIndex 工作表号(基于0)
    * @param $iStartCol 起始列号(基于0)
    * @param $iStartRow 起始行号(基于1)
    * @param $iEndCol 终止列号(基于0)
    * @param $iEndRow 终止行号(基于1)
    */
    public function doMergeCells($iSheetIndex, $iStartCol, $iStartRow, $iEndCol, $iEndRow)

    取消合并单元格

    /**
    * 取消合并单元格
    * @param $iSheetIndex 工作表号(基于0)
    * @param $iStartCol 起始列号(基于0)
    * @param $iStartRow 起始行号(基于1)
    * @param $iEndCol 终止列号(基于0)
    * @param $iEndRow 终止行号(基于1)
    */
    public function doUnmergeCells($iSheetIndex, $iStartCol, $iStartRow, $iEndCol, $iEndRow)

    插入行

    /**
    * 插入行
    * @param $iSheetIndex 工作表号(基于0)
    * @param $iBefore 插入行位置(基于1)
    * @param $iNumRows 插入行数
    */
    public function doInsertNewRowBefore($iSheetIndex, $iBefore = 1, $iNumRows = 1)

    插入列

    /**
    * 插入列
    * @param $iSheetIndex 工作表号(基于0)
    * @param $iBefore 插入列位置(基于1)
    * @param $NumColumns 插入列数
    */
    public function doInsertNewColumnBefore($iSheetIndex, $iBefore = 0, $NumColumns = 1)

    删除行

    /**
    * 删除行
    * @param $iSheetIndex 工作表号(基于0)
    * @param $iRow 删除行位置(基于1)
    * @param int $iNumRows 删除行数
    */
    public function doDeleteRow($iSheetIndex, $iRow, $iNumRows = 1)

    删除列

    /**
    * 删除列
    * @param $iSheetIndex 工作表号(基于0)
    * @param int $iColumn 删除列位置(基于0)
    * @param int $iNumColumns 删除列数
    */
    public function doDeleteColumn($iSheetIndex, $iColumn = 0, $iNumColumns = 1)

    获得单元格数据

    /**
    * 获得单元格数据
    * @param $iSheetIndex 工作表号(基于0)
    * @param $iColumn 列号(基于0)
    * @param $iRow 行号(基于1)
    * @return mixed
    */
    public function doGetValue($iSheetIndex, $iColumn, $iRow)

    设置单元格数据

    /**
    * 设置单元格数据
    * @param $iSheetIndex 工作表号(基于0)
    * @param $iColumn 列号(基于0)
    * @param $iRow 行号(基于1)
    * @param mixed $pValue 数值
    */
    public function doSetValue($iSheetIndex, $iColumn, $iRow, $pValue)

    设置单元格日期时间数据

    /**
    * 设置单元格日期时间数据
    * @param $iSheetIndex 工作表号(基于0)
    * @param $iColumn 列号(基于0)
    * @param $iRow 行号(基于1)
    * @param $iYear 年
    * @param $iMonth 月
    * @param $iDay 日
    * @param $iHour 小时
    * @param $iMinute 分钟
    * @param $iSecond 秒
    */
    public function doSetDateTimeValue($iSheetIndex, $iColumn, $iRow, $iYear, $iMonth, $iDay, $iHour, $iMinute, $iSecond)

    获得本地数据库连接

    /**
    * 获得本地数据库连接
    * @return yiidbConnection
    */
    public function doGetDb()

    根据数据库连接操作数据库,常见方法举例如下:

    $command = $connection->createCommand('SELECT * FROM post');

    $posts = $command->queryAll();

    $post = $command->queryOne();

    $command = $connection->createCommand('UPDATE post SET status=1');

    $command->execute();

    $command = $connection->createCommand('SELECT * FROM post WHERE id=:id');

    $command->bindValue(':id', $_GET['id']);

    $post = $command->query();

    获得数据源里配置的数据库连接

    /**
    * 获得第三方数据库访问链接功能
    * @param $s_sername 数据源名称
    * @param string $s_db 数据库名称
    * @return mixed|null 数据库连接
    */
    public function doGetOtherDB($s_sername, $s_db = "")

    获得参数值

    /**
    * 获得参数值
    * @return array
    */
    public function doGetParams()

    打开数据集(返回数据集所有数据)

    /**
    * 打开数据集
    * @param $s_dataset 数据集名称
    * @return array
    */
    public function doOpenDataset($s_dataset)

  • 相关阅读:
    浅析uitableview
    ios9和xcode7的适配问题
    uiviewContentMode的介绍 转载
    关于常见的加密算法浅析
    程序中发起电话呼叫
    单例实现方式以及类方法和实例方法
    windows下的git的安装教程
    上传github项目
    android 使用SurfaceView绘制一个简单动画控件
    android 自定义控件属性获取bitmap和drawable的绘制
  • 原文地址:https://www.cnblogs.com/tongdaoa/p/15033267.html
Copyright © 2020-2023  润新知