|
发表于 2017-4-18 18:02:01
|
显示全部楼层
1.简单除暴的方法就是直接
include() 到你要执行代码的控制器里。
2.优雅一点方案(我是这么认为,毕竟这个是我自己写的方案):
2.1.创建两个libraries库
libraries/Excel.php
libraries/Excelread.php
2.2.在这两个库里做include然后再
libraries/Excel.php
这个文件主要用于写、创建操作
PHP复制代码
<?php if(!defined('BASEPATH')) exit('No direct script access allowed');
require('PHPExcel.php');
class Excel extends PHPExcel {
}
复制代码
libraries/Excelread.php
这个主要用户读操作
PHP复制代码
<?php if(!defined('BASEPATH')) exit('No direct script access allowed');
require('PHPExcel.php');
require('PHPExcel/IOFactory.php');
class Excelread extends PHPExcel_IOFactory {
private $OBJExcel;
private $SHEET;
public $data;
public $dateFeild;
function __construct (){
$this->data = array();
}
/**
* 初始化当前XLS文件读取,并选择需要读取SHEET索引
* @param int $sheet
* @throws PHPExcel_Exception
*/
function init ($File,$sheet = 0){
$this->OBJExcel = PHPExcel_IOFactory ::load($File);
$this->SHEET = $this->OBJExcel->getSheet($sheet);
}
/**
* 如果需要指定某一个sheet那么直接使用该方法并传入索引
* @param $sheet
*/
function sheet ($sheet){
$this->data = array();//初始化数据存储对象
$this->SHEET = $this->OBJExcel->getSheet($sheet);
}
/**
* 构造读取的SHEET中的数据,并转为数组形式
* @param int $oneRow 从第几行开始作为起始行
* @param bool $showFeild 是否将第一行作为字段名称,默认为false
* @throws PHPExcel_Exception
*/
function ExcelData ($oneRow = 0,$showFeild = false,$dateFlag = false){
$this->data = array();//每次获取需要重新初始化一次
//获取行数与列数,注意列数需要转换
$highestRowNum = $this->SHEET->getHighestRow();
$highestColumn = $this->SHEET->getHighestColumn();
$highestColumnNum = PHPExcel_Cell ::columnIndexFromString($highestColumn);
$filed = array();
for ($i = $oneRow; $i < $highestColumnNum; $i++) {
$CellName = PHPExcel_Cell ::stringFromColumnIndex($i) . "1";
$CellVal = $this->SHEET->getCell($CellName)->getValue();
$filed[] = $CellVal;
}
//开始取出数据并存入数组
$i = $oneRow + 1;
for($i = $i;$i<=$highestRowNum;$i++){//ignore row 1
$row = array();
for($j=0; $j<$highestColumnNum;$j++){
$cellName = PHPExcel_Cell ::stringFromColumnIndex($j).$i;
$cellVal = $this->SHEET->getCell($cellName)->getValue();
if($this->isDateValue($j) && $cellVal){//该CELL是否为日期数据
$cellVal = gmdate("Y-m-d",PHPExcel_Shared_Date ::ExcelToPHP($cellVal));
}
if($showFeild){
$row[ $filed[$j] ] = $cellVal;
}else{
$row[] = $cellVal;
}
}
$this->data []= $row;
}
}
function isDateValue ($CELL){
$rs = false;
foreach($this->dateFeild as $ROW){
if($CELL == intval($ROW)){
$rs = true;
break;
}
}
return $rs;
}
}
复制代码
这样就可以通过
PHP复制代码
$this->load->[font =-apple -system, BlinkMacSystemFont , " ] libraries ("excel");[/font ]
$this->load->[font =-apple -system, BlinkMacSystemFont , " ] libraries ("excelread");[/font ]
复制代码
2.3.应用范例
一段使用的代码片段:
PHP复制代码
$this->load->library("excel");
$objExcel = new Excel ();
$objWriter = new PHPExcel_Writer_Excel5 ($objExcel);
//绘制表格边框 - 针对单个表格
$DrawBorder = array(
'borders' => array (
'outline' => array (
'style' => PHPExcel_Style_Border ::BORDER_THIN, //设置border样式
//'style' => PHPExcel_Style_Border::BORDER_THICK, 另一种样式
'color' => array ('argb' => '#000000') //设置border颜色
)
)
);
//设置文档基本属性.因为平台的编码的缘故该处不能使用,使用了也会导致乱码
$objProps = $objExcel->getProperties();
$objProps->setCreator("MOM");//作者
$objProps->setLastModifiedBy("MOM");//最后一次保存者
$objProps->setTitle("MOM The Worktimes for Pro");//标题
$objProps->setSubject("MOM The Worktimes for Pro");//主题
......
复制代码
到了这部你就是phpexcel的相关操作了。
|
评分
-
查看全部评分
|