阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 3064|回复: 4

[原创] 通达OA Excel 数据导出模块修正

[复制链接]
  • TA的每日心情
    开心
    2011-1-12 18:21
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2012-4-26 15:47:01 | 显示全部楼层 |阅读模式
    原创内容,首发 “阳光网驿”

    通达OA 2011  Excel 数据导出模块修正

    因为做二次开发,用到通达OA的导出Excel功能,发现以下问题。

    1、导出数据全部为字符型,但实际情况上有时候导出的数据是需要数值型的。
    2、不能新建Sheet


    ////修改文件  /inc/ExcelWriter.php      4135 字节

    修改  public function addRow( $row )  函数
    将原来的
    1. $this->_objActSheet->setCellValueExplicitByColumnAndRow( $col, $this->_rows, $data, PHPExcel_Cell_DataType::TYPE_STRING );
    复制代码



    修改为

    1. if(preg_match("/^\d*$/",$data)) {           ////判断是的数字,如果是就定义为         TYPE_NUMERIC  ,否就定义为 TYPE_STRING        $this->_objActSheet->setCellValueExplicitByColumnAndRow( $col, $this->_rows, $data, PHPExcel_Cell_DataType::TYPE_NUMERIC );  }   else                                        {                                                $this->_objActSheet->setCellValueExplicitByColumnAndRow( $col, $this->_rows, $data, PHPExcel_Cell_DataType::TYPE_STRING );                                        }                                }
    复制代码



    修改        public function setFileName( $filename )   函数

    1. ////将这行注释掉          $this->_objActSheet->setTitle( $this->encode( $filename ) );
    复制代码



    新加一个函数   创建新 Sheet
    1.         public function DatacreateSheet($sheet )                {                        $this->_objExcel->createSheet();                        $this->_rows=0;                }
    复制代码



    调用实例

    1. ///////////// Excel 导出文件名$outputFileName = "Excel导出文件名";      
    2. require_once( "inc/ExcelWriter.php" );$objExcel = new ExcelWriter( );$objExcel->setFileName($outputFileName);
    3. ////设置 Sheet表名        $objExcel->setTitle("本月发生记录");///定义表头        $EXCEL_Head = "姓名,部门,名称,费用 ";                   $objExcel->addHead( $EXCEL_Head );
    4. ///   $detail_month_record    需要导出的数组
    5.         $rowcount=count($detail_month_record);   for ($i = 0; $i <= $rowcount-1; $i++) {
    6.            $EXCEL_data =$detail_month_record[$i]['writeiname'];           $EXCEL_data .=",".$detail_month_record[$i]['DEPT_NAME'];
    7.            $EXCEL_data .=",". $detail_month_record[$i]['mctitle'];           $EXCEL_data .=",".$detail_month_record[$i]['cost'];                                     $objExcel->addRow( $EXCEL_data );           }
    8. /////建一个新表  Sheet $objExcel->DatacreateSheet();$objExcel->setActiveSheetIndex(1);////设置 Sheet表名$objExcel->setTitle("Sheet表名");
    9. ///定义表头        $EXCEL_Head = "姓名,部门,名称,费用 ";            $objExcel->addHead( $EXCEL_Head );

    10. ////////导出的数量        $EXCEL_data ="姓名,部门,名称,100";        $objExcel->addRow( $EXCEL_data );
    11.         $objExcel->setActiveSheetIndex2(0);        $objExcel->Save();exit( );
    复制代码


    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    无聊
    2012-5-12 22:52
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2012-4-26 22:27:15 | 显示全部楼层
    非常钦佩,值得学习。收藏一下,将来备用。
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    擦汗
    昨天 15:31
  • 签到天数: 2032 天

    [LV.Master]伴坛终老

    发表于 2012-4-27 07:59:07 | 显示全部楼层
    LZ很给力啊,这样的资源值得奖励!
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    慵懒
    2021-4-24 15:43
  • 签到天数: 1503 天

    [LV.Master]伴坛终老

    发表于 2012-4-27 08:21:39 | 显示全部楼层
    好帖子,收藏了,多谢楼主无私奉献!!
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2012-1-12 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2012-5-2 17:01:07 | 显示全部楼层
    支持技术流,,,,,保存一下备用
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表