TA的每日心情 | 开心 2011-1-12 18:21 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
原创内容,首发 “阳光网驿”
通达OA 2011 Excel 数据导出模块修正
因为做二次开发,用到通达OA的导出Excel功能,发现以下问题。
1、导出数据全部为字符型,但实际情况上有时候导出的数据是需要数值型的。
2、不能新建Sheet
////修改文件 /inc/ExcelWriter.php 4135 字节
修改 public function addRow( $row ) 函数
将原来的
- $this->_objActSheet->setCellValueExplicitByColumnAndRow( $col, $this->_rows, $data, PHPExcel_Cell_DataType::TYPE_STRING );
复制代码
修改为
- 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 ) 函数
- ////将这行注释掉 $this->_objActSheet->setTitle( $this->encode( $filename ) );
复制代码
新加一个函数 创建新 Sheet
- public function DatacreateSheet($sheet ) { $this->_objExcel->createSheet(); $this->_rows=0; }
复制代码
调用实例
- ///////////// Excel 导出文件名$outputFileName = "Excel导出文件名";
- require_once( "inc/ExcelWriter.php" );$objExcel = new ExcelWriter( );$objExcel->setFileName($outputFileName);
- ////设置 Sheet表名 $objExcel->setTitle("本月发生记录");///定义表头 $EXCEL_Head = "姓名,部门,名称,费用 "; $objExcel->addHead( $EXCEL_Head );
- /// $detail_month_record 需要导出的数组
- $rowcount=count($detail_month_record); for ($i = 0; $i <= $rowcount-1; $i++) {
- $EXCEL_data =$detail_month_record[$i]['writeiname']; $EXCEL_data .=",".$detail_month_record[$i]['DEPT_NAME'];
- $EXCEL_data .=",". $detail_month_record[$i]['mctitle']; $EXCEL_data .=",".$detail_month_record[$i]['cost']; $objExcel->addRow( $EXCEL_data ); }
- /////建一个新表 Sheet $objExcel->DatacreateSheet();$objExcel->setActiveSheetIndex(1);////设置 Sheet表名$objExcel->setTitle("Sheet表名");
- ///定义表头 $EXCEL_Head = "姓名,部门,名称,费用 "; $objExcel->addHead( $EXCEL_Head );
- ////////导出的数量 $EXCEL_data ="姓名,部门,名称,100"; $objExcel->addRow( $EXCEL_data );
- $objExcel->setActiveSheetIndex2(0); $objExcel->Save();exit( );
复制代码
|
|