1) 解壓壓縮包裏的Classes文件夾中的內容到application\libraries\目錄下,目錄結構以下: php
– application\libraries\PHPExcel.php mysql
– application\libraries\PHPExcel (文件夾) sql
2)修改application\libraries\PHPExcel\IOFactory.php 文件 數據庫
– 將其類名從PHPExcel_IOFactory改成IOFactory,聽從CI類命名規則。 數組
– 將其構造函數改成public(__construct) 服務器
public function index(){
//判斷上傳文件存在值
if(!empty($_FILES)){
$filename = $_FILES['file']['name'];//被上傳文件的名稱
$filetype = $_FILES["file"]["type"];//被上傳文件的類型
$filesize = $_FILES["file"]["size"];// 被上傳文件的大小,以字節計
$filetmp = $_FILES["file"]["tmp_name"];//存儲在服務器的文件的臨時副本的名稱
$fileerror = $_FILES["file"]["error"];//由文件上傳致使的錯誤代碼
//判斷是否上傳成功
if($fileerror==0){
//判斷是不是excel表格
if($filetype=="application/vnd.ms-excel" || $filetype=="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"){
/*設置保存路徑*/
$filePath = 'uploads/excel/';
$str = "";
/*加載PHPExcel*/
$this->load->library('PHPExcel.php');
$this->load->library('PHPExcel/IOFactory.php');
//$this->load->library('PHPExcel/Reader/Excel5.php');
//注意設置時區
$time=date("YmdHis");//去當前上傳的時間
//獲取上傳文件的擴展名
$extend=strrchr ($filename,'.');
//上傳後的文件名
$name=$time.$extend;
//上傳後的文件名地址
$uploadfile=$filePath.$name;//上傳後的文件名地址
//move_uploaded_file() 函數將上傳的文件移動到新位置。若成功,則返回 true,不然返回 false。
$result=move_uploaded_file($filetmp,$uploadfile);//假如上傳到當前目錄下
//echo $result;
//若是上傳文件成功,就執行導入excel操做
if($result){
$inputFileType = IOFactory::identify($uploadfile);//肯定輸入文件的格式
$objReader = IOFactory::createReader($inputFileType);//穿件相對應的閱讀器
$objPHPExcel = $objReader->load($uploadfile); //加載要讀取的文件
$sheet = $objPHPExcel->getSheet(); //獲得當前活動sheet
$highestRow = $sheet->getHighestRow(); //取得總行數
$highestColumn = $sheet->getHighestColumn(); //取得總列數
// print_r($highestRow);
//print_r($highestColumn);
/* 第一種方法
//循環讀取excel文件,讀取一條,插入一條
for($j=1;$j<=$highestRow;$j++) //從第一行開始讀取數據
{
for($k='A';$k<=$highestColumn;$k++) //從A列讀取數據
{
//
//這種方法簡單,但有不妥,以'\\'合併爲數組,再分割\\爲字段值插入到數據庫
//實測在excel中,若是某單元格的值包含了\\導入的數據會爲空
//
$str .=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'\\';//讀取單元格
}
//echo $str; die();
//explode:函數把字符串分割爲數組。
$strs = explode("\\",$str);
print_r($strs);
$sql = "INSERT INTO te(`id`, `name`) VALUES (
'{$strs[0]}',
'{$strs[1]}')";
//die($sql);
if(!mysql_query($sql))
{
return false;
echo 'sql語句有誤';
}
mysql_query($sql);
$str = "";
}
unlink($uploadfile); //刪除上傳的excel文件
$msg = "導入成功!";
*/
/* 第二種方法*/
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//總列數
$headtitle=array();
for ($row = 2;$row <= $highestRow;$row++){
$arr=array();
//注意highestColumnIndex的列數索引從0開始
for ($col = 0;$col < $highestColumnIndex;$col++){
$arr[$col] =$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
}
// $sql = "INSERT INTO admins(`account`, `pwd`, `username`, `power`, `tel`,`sex`,`work_numjob`,`job`,`sector`) VALUES (
// '{$strs[0]}',
// '{$strs[1]}',
// '{$strs[2]}',
// '{$strs[3]}',
// '{$strs[4]}',
// '{$strs[5]}',
// '{$strs[6]}',
// '{$strs[7]}',
// '{$strs[8]}',)";
$data=array(
'account'=>$arr['0'],
'pwd'=>$arr['1'],
'username'=>$arr['2'],
'power'=>$arr['3'],
'tel'=>$arr['4'],
'sex'=>$arr['5'],
'work_num'=>$arr['6'],
'job'=>$arr['7'],
'sector'=>$arr['8'],
);
$this->db->insert("admins",$data);
}
unlink($uploadfile);
show_msg("導入成功",site_url("連接地址"));//跳轉地址
//刪除上傳的excel文件
}
}else{
show_msg("上傳文件非cvs格式,請從新上傳");
}
}else{
switch ($fileerror){
case 1:
show_msg("上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值.");
break;
case 2:
show_msg("上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值");
break;
case 3:
show_msg("文件只有部分被上傳");
break;
case 4:
show_msg("沒有文件被上傳");
break;
}
}
}
} app
1. 導入一個Excel最簡單的方法是使用PHPExel的IO Factory,調用PHPExcel_IOFactory類的靜態法load,它能夠自動識別文檔格式,包括Excel200七、 Excel2003XML、OOCalcSYLK、Gnumeric、CSV。返回一個PHPExcel的實例。 ide
//加載工廠類 函數
include'PHPExcel/IOFactory.php';
//要讀取的xls文件路徑 this
$inputFileName = './sampleData/example1.xls';
/** 用PHPExcel_IOFactory的load方法獲得excel操做對象 **/
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
//獲得當前活動表格,調用toArray方法,獲得表格的二維數組
$sheetData =$objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
var_dump($sheetData);
若是你知道這個Excel文檔的格式,能夠創建一個相應的Reader去加載要讀取的Excel文檔。可是若是你加載了錯誤的文檔類型,可會產生不可預知的錯誤。
$inputFileName = './sampleData/example1.xls';
/** Create a new Excel5 Reader **/
$objReader = new PHPExcel_Reader_Excel5();
// $objReader = new PHPExcel_Reader_Excel2007();
// $objReader = new PHPExcel_Reader_Excel2003XML();
// $objReader = new PHPExcel_Reader_OOCalc();
// $objReader = new PHPExcel_Reader_SYLK();
// $objReader = new PHPExcel_Reader_Gnumeric();
// $objReader = new PHPExcel_Reader_CSV();
/** Load $inputFileName to a PHPExcel Object **/
$objPHPExcel = $objReader->load($inputFileName);
//獲得當前活動sheet
$curSheet =$objPHPExcel->getActiveSheet();
//以二維數組形式返回該表格的數據
$sheetData = $curSheet->toArray(null,true,true,true);
var_dump($sheetData);
也能夠用PHPExcel_IOFactory的createReader方法去獲得一個Reader對象,無需知道要讀取文件的格式。
$inputFileType = 'Excel5';
// $inputFileType = 'Excel2007';
// $inputFileType = 'Excel2003XML';
// $inputFileType = 'OOCalc';
// $inputFileType = 'SYLK';
// $inputFileType = 'Gnumeric';
// $inputFileType = 'CSV';
$inputFileName = './sampleData/example1.xls';
/** Create a new Reader of the type defined in $inputFileType **/
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
/** Load $inputFileName to a PHPExcel Object **/
$objPHPExcel = $objReader->load($inputFileName);
//獲得當前活動sheet
$curSheet = $objPHPExcel->getActiveSheet();
//以二維數組形式返回該表格的數據
$sheetData = $curSheet->toArray(null,true,true,true);
var_dump($sheetData);
若是在讀取文件以前,文件格式未知,你能夠經過IOFactory 的 identify()方法獲得文件類型,而後經過createReader()方法去穿件閱讀器。
$inputFileName = './sampleData/example1.xls';
/** 肯定輸入文件的格式 **/
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
/** 穿件相對應的閱讀器 **/
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
/** 加載要讀取的文件 **/
$objPHPExcel = $objReader->load($inputFileName);
在使用load()方法加載文件以前,能夠設置讀取選項來控制load的行爲.
setReadDataOnly()方法,配置閱讀器不關注表格數據的數據類型,都以string格式返回
$inputFileType = 'Excel5';
$inputFileName = './sampleData/example1.xls';
/** Create a new Reader of the type defined in $inputFileType **/
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
/** 配置單元格數據都以字符串返回 **/
$objReader->setReadDataOnly(true);
/** Load $inputFileName to a PHPExcel Object **/
$objPHPExcel = $objReader->load($inputFileName);
$sheetData =$objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
var_dump($sheetData);