網上好多資料,但運行起來,老是有問題,此次好保存下來。php
phalcon下:app
第一步:在index.php裏面添加yii
include __DIR__ . "/../app/extensions/phpexcel/PHPExcel.php";函數
第二步:實例functionspa
/*
* 批量導入用戶
*/
public function batchImportUsersAction()
{excel
$filePath = dirname(__FILE__).'/../data/users.xls';utf-8
$PHPReader = new PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($filePath)){
$PHPReader = new PHPExcel_Reader_Excel5();開發
if(!$PHPReader->canRead($filePath)){get
echo 'no Excel';
exit;
}
}else{
echo 'can read';exit;
}
$PHPExcel = $PHPReader->load($filePath);
// echo is_object($PHPExcel).'mmm';exit; //查看是否初始化成功
$currentSheet = $PHPExcel->getSheet(0); //讀取excel文件中的第一個工做表
$allColumn = $currentSheet->getHighestColumn();//取得全部列
$allRow = $currentSheet->getHighestRow();//取得一共有多少行
// $choose_row = $allRow; //遍歷全部行
$choose_row = 205;
for($currentRow = 177;$currentRow <= $choose_row;$currentRow++){ //遍歷全部行或指定行,177是excel的行號
for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++){ //從第A列開始輸出
$val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65,$currentRow)->getValue();/**ord()將字符轉爲十進制數*/
// if($currentColumn == 'B'){
// echo iconv('gb2312','utf-8', $val);// 轉成utf-8格式
// }
// echo $val;
echo $val;
}
echo '<br/>';
//插入表
// $use = new Users();
// $use->employee_id = $currentSheet->getCellByColumnAndRow(ord('A') - 65,$currentRow)->getValue();
// $use->user_name = $currentSheet->getCellByColumnAndRow(ord('B') - 65,$currentRow)->getValue();
// $use->email = $currentSheet->getCellByColumnAndRow(ord('D') - 65,$currentRow)->getValue();
// $use->password = 22;
// $use->role = 1;
// $use->depart_id = 1;
// $use->status = 1;
// $use->position = 1;
// $use->update_time = time();
// $use->record_time = time();
//
// if($use->save() == false){
// echo $currentRow.'行出錯';
// }it
}
}
補充:yii下 開發,在command裏用cron定時跑時,時常會出現問題,好比:
include(PHPExcel_Shared_String.php): failed to open stream: No such file or directory in file /data1/www/local/jiaban/yii/framework/YiiBase.php at line 435
#0 /data1/www/local/jiaban/yii/framework/YiiBase.php(435): autoload()
#1 unknown(0): autoload()
上面的報錯,是典型的autoload 自動加載衝突。 由於在Yii中用spl_autoload_register(array('YiiBase','autoload')) 定義過一個,而phpexcel或者phpmailer裏也定義了各自的autoload函數。
這時,若是系統自動用yii的autoload去加載phpexcel或者phpmailer的類時,會出現類名的問題。好比phpexcel下 PHPExcel_Shared_String.class.php,是多拼接一個class的。
最好的方法,入口腳本處,導入phpexcel和phpmailer 的入口文件。
Yii 項目中 修改index.php
Yii commands中,修改 protected/yiic.php
phalcon 和 task中,修改 index.php
而後:還要在配置文件裏面導入哦,好比Yii command的配置文件,console.php中,要加入 import 'application.extensions.*',