thinkPHP導(dǎo)入Excel文件到數(shù)據(jù)庫和導(dǎo)出到Excel

1.官網(wǎng)下載PHPExcel庫地址:

https://github.com/PHPOffice/PHPExcel

2導(dǎo)入賬號控制器中



/**

? ? * 導(dǎo)入員工賬號

*/

public function fabu1(){

? ? ? ? Loader::import('PHPExcel.PHPExcel');

? ? ? ? Loader::import('PHPExcel.PHPExcel.PHPExcel_IOFactory');

? ? ? ? Loader::import('PHPExcel.PHPExcel.PHPExcel_Cell'); //實(shí)例化PHPExcel

? ? ? ? ? $objPHPExcel = new \PHPExcel();

? ? ? ? ? $file = request()->file('excel');

? ? ? ? ? if ($file) {

? ? ? ? ? ? ? $file_types = explode(".", $_FILES ['excel'] ['name']); // ["name"] => string(25) "excel文件名.xls"

? ? ? ? ? $file_type = $file_types [count($file_types) - 1];//xls后綴

? ? ? ? ? $file_name = $file_types [count($file_types) - 2];//xls去后綴的文件名 /*判別是不是.xls文件盈包,判別是不是excel文件*/

? ? ? ? ? if (strtolower($file_type) != "xls" && strtolower($file_type) != "xlsx") { echo '不是Excel文件野哭,重新上傳'; die;

? ? ? ? ? }

? ? ? ? ? ? $info = $file->move(ROOT_PATH . 'public' . DS . 'excel');//上傳位置

? ? ? ? ? ? $path = ROOT_PATH . 'public' . DS . 'excel' . DS; $file_path = $path . $info->getSaveName();//上傳后的EXCEL路徑

? ? ? ? ? ? $re = $this->actionRead($file_path, 'utf-8');

? ? ? ? ? ? ? ? array_splice($re, 1, 0);

? ? ? ? ? ? ? ? unset($re[0]);

? ? ? ? ? ? ? ? /*將數(shù)組的鍵改為自定義名稱*/

? ? ? ? ? ? ? ? // print_r($re);die;

? ? ? ? ? ? ? ? $keys = array('name','password','number'); //鍵名按順序

? ? ? ? ? ? ? ? foreach ($re as $i => $vals) {

? ? ? ? ? ? ? ? ? $re[$i] = array_combine($keys, $vals);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? // print_r($re);die;


? ? ? ? ? ? ? for ($i = 1; $i <= count($re); $i++) {

? ? ? ? ? ? ? $data['name'] = $re[$i]['name'];

? ? ? ? ? ? ? $data['password'] = $re[$i]['password'];

? ? ? ? ? ? ? $data['number'] = $re[$i]['number'];

? ? ? ? ? ? ? // print_r($data);die;

? ? ? ? ? ? ? $arr = Db::name('user')->where('name',$re[$i]['name'])->find();

? ? ? ? ? ? ? if(!$arr){

? ? ? ? ? ? ? ? ? $res = Db::name('user')->insert($data);

? ? ? ? ? ? ? }

? ? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return $this->redirect('xfabu');

}



3.

public function actionRead($filename,$encode='utf-8'){

? $objReader = \PHPExcel_IOFactory::createReader('Excel2007');

? $objReader->setReadDataOnly(true);

? $objPHPExcel = $objReader->load($filename);

? $objWorksheet = $objPHPExcel->getActiveSheet();

? $highestRow = $objWorksheet->getHighestRow(); //return $highestRow;

? $highestColumn = $objWorksheet->getHighestColumn();

? $highestColumnIndex = \PHPExcel_Cell::columnIndexFromString($highestColumn);

? //var_dump($highestColumnIndex);

? $excelData = array();

? for($row = 1; $row <= $highestRow; $row++) {

? ? for ($col = 0; $col < $highestColumnIndex; $col++) {

? ? ? $excelData[$row][]=(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();

? ? }

? }

? return $excelData;

}

4.文件中


5.數(shù)據(jù)庫中


6導(dǎo)出到Excel



7代碼

/*導(dǎo)出到Excel*/

public function phpExcelList($field, $list, $title='文件')

? ? {

? ? ? ? Loader::import('PHPExcel.PHPExcel');

? ? ? ? Loader::import('PHPExcel.PHPExcel.PHPExcel_IOFactory');

? ? ? ? Loader::import('PHPExcel.PHPExcel.PHPExcel_Cell'); //實(shí)例化PHPExcel

? ? ? ? ? $objPHPExcel = new \PHPExcel();

? ? ? ? // vendor('phpExcel.PHPExcel');

? ? ? ? // $objPHPExcel = new \PHPExcel();

? ? ? ? $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); //設(shè)置保存版本格式

? ? ? ? foreach ($list as $key => $value) {

? ? ? ? ? ? foreach ($field as $k => $v) {

? ? ? ? ? ? ? ? if ($key == 0) {

? ? ? ? ? ? ? ? ? ? $objPHPExcel->getActiveSheet()->setCellValue($k . '1', $v[1]);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? $i = $key + 2; //表格是從2開始的

? ? ? ? ? ? ? ? $objPHPExcel->getActiveSheet()->setCellValue($k . $i, $value[$v[0]]);

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? header("Pragma: public");

? ? ? ? header("Expires: 0");

? ? ? ? header("Cache-Control:must-revalidate, post-check=0, pre-check=0");

? ? ? ? header("Content-Type:application/force-download");

? ? ? ? header("Content-Type:application/vnd.ms-execl");

? ? ? ? header("Content-Type:application/octet-stream");

? ? ? ? header("Content-Type:application/download");;

? ? ? ? header('Content-Disposition:attachment;filename='.$title.'.xls');

? ? ? ? header("Content-Transfer-Encoding:binary");

//? ? ? ? $objWriter->save($title.'.xls');

? ? ? ? $objWriter->save('php://output');

? ? }

? ? ? public function outExcelRecharge() {


? ? ? ? //手機(jī)號

? ? ? ? $data = Db::name('phone')

? ? ? ? ? ? ? ? ? ? ->alias('a')

? ? ? ? ? ? ? ? ? ? ->field(['a.id','a.phone','a.beizhu','a.status','a.time','a.type','a.user_id'])

? ? ? ? ? ? ? ? ? ? ->join('admin_chudan u','u.phone_id=a.id','left')

? ? ? ? ? ? ? ? ? ? ->field('u.user_bianhao ,u.name as uname,u.phone as uphone,u.address,u.money,u.time as utime,u.status as ustatus')

? ? ? ? ? ? ? ? ? ? ->join('admin_user s','s.id=a.user_id','left')

? ? ? ? ? ? ? ? ? ? ->field('s.name as sname,s.number as snumber')

? ? ? ? ? ? ? ? ? ? ->order('u.user_id desc')

? ? ? ? ? ? ? ? ? ? ->select();

? ? ? ? foreach ($data as $key => $value) {

? ? ? ? ? if($data[$key]['type'] == 0){ $data[$key]['type'] ="無" ;} else if($data[$key]['type'] == 1){ $data[$key]['type'] ="審核中" ;}else if($data[$key]['type'] == 2){ $data[$key]['type'] ="已出單" ;}

? ? ? ? ? if($data[$key]['status'] == 0){ $data[$key]['status'] ="未撥打" ;} else if($data[$key]['status'] == 1){ $data[$key]['status'] ="已撥打" ;}

? ? ? ? }

? ? ? ? $field = array(

? ? ? ? ? ? 'A' => array('id', 'ID'),

? ? ? ? ? ? 'B' => array('user_id', '員工ID'),

? ? ? ? ? ? 'C' => array('sname', '員工賬號'),

? ? ? ? ? ? 'D' => array('snumber', '員工編號'),

? ? ? ? ? ? 'E' => array('phone', '手機(jī)號'),

? ? ? ? ? ? 'F' => array('beizhu', '備注'),

? ? ? ? ? ? 'J' => array('type', '出單狀態(tài)'),

? ? ? ? ? ? 'H' => array('status', '撥打狀態(tài)'),

? ? ? ? ? ? 'I' => array('utime', '出單時(shí)間'),

? ? ? ? ? ? 'G' => array('uname', '用戶姓名'),

? ? ? ? ? ? 'K' => array('address', '用戶地址'),

? ? ? ? ? ? 'L' => array('money', '出單金額'),

? ? ? ? );


? ? ? ? $this->phpExcelList($field, $data, '手機(jī)號' . date('Y-m-d'));

? ? }


最后結(jié)果


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖贾惦,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異敦捧,居然都是意外死亡须板,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門绞惦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逼纸,“玉大人,你說我怎么就攤上這事济蝉〗芄簦” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵王滤,是天一觀的道長贺嫂。 經(jīng)常有香客問我,道長雁乡,這世上最難降的妖魔是什么第喳? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮踱稍,結(jié)果婚禮上曲饱,老公的妹妹穿的比我還像新娘。我一直安慰自己珠月,他們只是感情好扩淀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著啤挎,像睡著了一般驻谆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天胜臊,我揣著相機(jī)與錄音勺卢,去河邊找鬼。 笑死象对,一個(gè)胖子當(dāng)著我的面吹牛黑忱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播织盼,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼杨何,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了沥邻?” 一聲冷哼從身側(cè)響起危虱,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唐全,沒想到半個(gè)月后埃跷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邮利,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年弥雹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片延届。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡剪勿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出方庭,到底是詐尸還是另有隱情厕吉,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布械念,位于F島的核電站头朱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏龄减。R本人自食惡果不足惜项钮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望希停。 院中可真熱鬧烁巫,春花似錦、人聲如沸宠能。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棍潘。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間亦歉,已是汗流浹背恤浪。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肴楷,地道東北人水由。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像赛蔫,于是被迫代替她去往敵國和親砂客。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,451評論 0 13
  • 方法一 function upExecel(){//判斷是否選擇了要上傳的表格if (empty($_POST['...
    追光者2閱讀 336評論 0 0
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,030評論 0 2
  • 星河明滅此更風(fēng)呵恢,一畢人間爽籟功鞠值。 自有閑情翻墨卷,應(yīng)無暗恨謝芳叢渗钉。 徐吹客帳疑秋日彤恶,漫引鄉(xiāng)心似過鴻。 月下臨窗知解...
    北辰王宥先閱讀 565評論 3 27
  • 這幾日傷了腰鳄橘,不能出遠(yuǎn)門声离,也不能干重活,大夫說不能爬山瘫怜,但可以游泳术徊。 記得莊工(一起出游的伙伴)那天在山上告訴我:...
    關(guān)中人閱讀 336評論 0 1