天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

ThinkPHP與PHPExcel沖突解決方法

很早之前就知道有一個(gè)叫做phpExcel的類(官方網(wǎng)站)可以用來操作Excel,一直沒有機(jī)會(huì)嘗試,今天試用發(fā)現(xiàn)無比強(qiáng)大,下載后的源碼包里有詳細(xì)文檔,幾乎能實(shí)現(xiàn)手工操作Excel能實(shí)現(xiàn)的一切功能。
一個(gè)簡單的讀取Excel的例子如下:
復(fù)制代碼 代碼如下:
$inputFileType = 'Excel2007';
$inputFileName = './public/files/import_user_template.xlsx';
$sheetname = 'Sheet1';
//指定Excel類型,創(chuàng)建一個(gè)reader
$objReader = phpExcel_IOFactory::createReader($inputFileType);
//設(shè)置只讀取數(shù)據(jù),不包括公式和格式
$objReader->setReadDataOnly(true);
//只讀取指定的sheet
$objReader->setLoadSheetsOnly($sheetname);
$objphpExcel = $objReader->load($inputFileName);
$curSheet = $objphpExcel->getSheet(0);
//包含數(shù)據(jù)的最大列
$allColumn = $curSheet->getHighestColumn();
//包含數(shù)據(jù)的最大行
$allRow = $curSheet->getHighestRow();
for($currentRow = 1; $currentRow <= $allRow; $currentRow++){
for($currentCol = 'A'; $currentCol <= $allColumn; $currentCol++){
echo $curSheet->getCell($currentCol.$currentRow)->getValue()."/t";
}
echo "/r/n";
}

要在Thinkphp中使用,把源碼包中的Classes目錄復(fù)制到Thinkphp的Vendor目錄下,改名為phpExcel,然后調(diào)用Vendor方法載入
復(fù)制代碼 代碼如下:
vendor('phpExcel.phpExcel');

可是這樣一來發(fā)現(xiàn)讀取Excel以后再調(diào)用M或者D方法實(shí)例化模型類時(shí)報(bào)找不到Model類的錯(cuò)誤,經(jīng)過研究發(fā)現(xiàn)是自動(dòng)裝載機(jī)制沖突,要解決沖突,需要在M或者D方法調(diào)用之前使用spl_autoload_register函數(shù)重新注冊(cè)autoloader類
復(fù)制代碼 代碼如下:
spl_autoload_register(array('Think','autoload'));

在Thinkphp中調(diào)用phpExcel的問題解決方案
在Thinkphp中調(diào)用phpExcel時(shí),數(shù)據(jù)可以完全讀出來,但是下一步D,M或調(diào)用模板的時(shí)候會(huì)出錯(cuò)。(不知道是我一個(gè)人遇到這個(gè)問題 嗎?)
經(jīng)過研究,終于找到了解決方法。和大家分享一下。呵呵!
1,首先下載phpExcel的包,放在 Thinkphp/Vendor/(也就是Think的第三方類庫目錄)下。
2,調(diào)用函數(shù)。
復(fù)制代碼 代碼如下:
protected function Import_Execl($file){
if(!file_exists($file)){
return array("error"=>1);
}
Vendor("phpExcel.phpExcel");
$phpExcel = new phpExcel();
$phpReader = new phpExcel_Reader_Excel2007();
if(!$phpReader->canRead($file)){
$phpReader = new phpExcel_Reader_Excel5();
if(!$phpReader->canRead($file)){
return array("error"=>2);
}
}
$phpExcel = $phpReader->load($file);
$SheetCount = $phpExcel->getSheetCount();
for($i=0;$i<$SheetCount;$i++){
$currentSheet = $phpExcel->getSheet($i);
$allColumn = $this->ExcelChange($currentSheet->getHighestColumn());
$allRow = $currentSheet->getHighestRow();
$array[$i]["Title"] = $currentSheet->getTitle();
$array[$i]["Cols"] = $allColumn;
$array[$i]["Rows"] = $allRow;
$arr = array();
for($currentRow = 1 ;$currentRow<=$allRow;$currentRow++){
$row = array();
for($currentColumn=0;$currentColumn<$allColumn;$currentColumn++){
$row[$currentColumn] = $currentSheet->getCellByColumnAndRow($currentColumn,$currentRow)->getValue();
}
$arr[$currentRow] = $row;
}
$array[$i]["Content"] = $arr;
}
spl_autoload_register(array('Think','autoload'));//必須的,不然ThinkphpphpExcel會(huì)沖突
unset($currentSheet);
unset($phpReader);
unset($phpExcel);
unlink($file);
return array("error"=>0,"data"=>$array);
}
protected function ExcelChange($str){//配合Execl批量導(dǎo)入的函數(shù)
$len = strlen($str)-1;
$num = 0;
for($i=$len;$i>=0;$i--){
$num += (ord($str[$i]) - 64)*pow(26,$len-$i);
}
return $num;
}

3,調(diào)用。
復(fù)制代碼 代碼如下:
public function import(){
if(isset($_FILES["import"]) && ($_FILES["import"]["error"] == 0)){
$result = $this->Import_Execl($_FILES["import"]["tmp_name"]);
if($this->Execl_Error[$result["error"]] == 0){
$execl_data = $result["data"][0]["Content"];
unset($execl_data[1]);
$data = D("Data");
foreach($execl_data as $k=>$v){
$d["serial_no"] = $v[0];
$d["check_no"] = $v[1];
$d["work_no"] = $v[2];
$d["class_name"] = $v[3];
$d["user_name"] = $v[4];
$d["new_class"] = $v[5];
$d["error_level"] = $v[6];
$data->data($d)->add();
}
$this->success($this->Execl_Error[$result["error"]]);
}else{
$this->error($this->Execl_Error[$result["error"]]);
}
}else{
$this->error("上傳文件失敗");
}
}

4,錯(cuò)誤數(shù)據(jù):
復(fù)制代碼 代碼如下:
protected $Execl_Error = array("數(shù)據(jù)導(dǎo)入成功","找不到文件","Execl文件格式不正確");

php技術(shù)ThinkPHP與PHPExcel沖突解決方法,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日本不卡不码高清免费 | 国产强奷伦奷片 | 日韩欧美国产免费看清风阁 | 日韩久久影院 | 伊人久久一本 | 麻豆国产精品久久人妻 | 国产精品久久久久婷婷五月色 | 国产一区二区青青精品久久 | 成人国产一区 | 男女午夜性爽快免费视频不卡 | 蜜臀AV精品久久无码99 | 免费观看国产视频 | 国产强奷糟蹋漂亮邻居在线观看 | 伊人影院中文字幕 | 区产品乱码芒果精品P站在线 | 伊人第一路线 | 仓井空torrent| 国产视频成人 | 青苹果乐园在线观看电视剧 | 精品熟女少妇AV免费观看 | 2022一本久道久久综合狂躁 | 芒果视频看片在线观看 | 无码人妻丰满熟妇区五十路久久 | 日日噜噜夜夜躁躁狠狠 | 久久综合丁香激情久久 | 国产精人妻无码一区麻豆 | 天堂Av亚洲欧美日韩国产综合 | 9277在线观看免费高清完整版 | 久久精品亚洲AV高清网站性色 | 久久re视频这里精品青 | 午夜性色一区二区三区不卡视频 | 57PAO强力打造高清免费 | 青柠在线观看视频在线 | 亚洲午夜精品A片久久软件 亚洲午夜精品A片久久不卡蜜桃 | 中文字幕国产在线观看 | jizzjizz中国大学生 | 超碰在线视频 免费 | 成人人猿泰山 | 清晨紧湿爱运动h高h | 久久久无码AV精品亚洲A片软件 | 中文字幕中文字幕永久免费 |