您的位置:首页 > 编程语言 > PHP开发

php中excel的导出导入

2016-09-21 09:54 134 查看
1,,导出

<?php

namespace Admin\Controller;

use Think\Controller;

/**

*

* 导出Excel文件数据到MySQL数据库

*/

class DaochuController extends CommonController {

public function export(){

//引入PHPExcel类

import('Org.Util.PHPExcel');

$objPHPExcel = new \PHPExcel();

$activeSheet = $objPHPExcel->getActiveSheet();

$objPHPExcel->getProperties()

->setCreator($creator)->setLastModifiedBy($modifier)

->setTitle($title)->setSubject($subject)

->setDescription($description)

->setKeywords($keywords)

->setCategory($category);

$data= M('Stock')->where(array('shop'=>$_SESSION['user']['nid']))->select();

$shop = M('shop')->where(array('id'=>$_SESSION['user']['nid']))->find();

$name= $shop['name'];

$yanse = $daxiao = array();

$color = M('yanse')->where(array('shop'=>$_SESSION['user']['nid']))->select();

$colors = array_coltokey($color,'id');

$size = M('daxiao')->where(array('shop'=>$_SESSION['user']['nid']))->select();

$sizes = array_coltokey($size,'id');

$cursheet = $objPHPExcel->setActiveSheetIndex(0);

$cursheet->setCellValue('A1', '序号')

->setCellValue('B1', '条码')

->setCellValue('C1', '款号')

->setCellValue('D1', '颜色')

->setCellValue('E1', '大小')

->setCellValue('F1', '销售单价')

->setCellValue('G1', '库存数量');

$num = 2;

foreach($data as $k => $v){

$cursheet->setCellValue('A'.$num, $num-1)

->setCellValue('B'.$num, ' '.$v['cno'])

->setCellValue('C'.$num, ' '.$v['kno'])

->setCellValue('D'.$num, ' '.$colors[$v['color']]['color'])

->setCellValue('E'.$num, ' '.$sizes[$v['size']]['size'])

->setCellValue('F'.$num, $v['price']*1)

->setCellValue('G'.$num, $v['num']);

$num++;

}

$objPHPExcel->setActiveSheetIndex(0);

$filename = iconv('utf-8','gbk',$name . '导出.xls');

header('Content-Type: application/vnd.ms-excel');

header('Content-Disposition: attachment;filename="'.$filename.'"');

header('Cache-Control: max-age=0');

$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

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

exit();

}

}

2导入

<?php

namespace Admin\Controller;

use Think\Controller;

/**

*

* 导入Excel文件数据到MySQL数据库

*/

class DaoruController extends CommonController {

/**

* 显示上传表单html页面

*/

public function daoru() {

if($_GET['do']=='download'){

$filepath = './Public/daoru/'.$_SESSION['user']['nid'].'.xls';

if(file_exists($filepath)){

$shop = M('shop')->where(array('id'=>$_SESSION['user']['nid']))->find();

$filename = iconv('utf-8','gbk',$shop['name'].'导入格式.xls');

header("Content-Type: application/vnd.ms-excel; charset=utf8");

header("Content-Disposition: attachment; filename=".$filename);

readfile($filepath);

exit();

}else{

$this->error('下载文件不存在!');

}

}

$shop = M('shop')->where(array('id'=>$_SESSION['user']['nid']))->find();

// __ROOT__是根目录,必须指定根目录,才可以下载

$this->display();

}

/**

* 上传Excel文件

*/

public function upload() {

//实例化上传类

$upload = new \Think\Upload();

//设置附件上传文件大小200Kib

$upload->maxSize = 2000000;

//设置附件上传类型

$upload->allowExts = array('xls', 'xlsx', 'csv');

//设置附件上传目录

$upload->rootPath = './Uploads/';

//设置附件上传子目录

$upload->savePath = '';

$upload->subName = array('date','Ym');

$data=array(

'upload_time' => time(),

'upload_user' => $_SESSION['user']['username'],

'upload_ip' => getIp(),

'shop'=>$_SESSION['user']['nid']

);

// 上传文件

$info = $upload->upload();

if (!$info) { //如果上传失败,提示错误信息

$this->error($upload->getError());

} else { //上传成功

//获取上传保存文件名

$fileName = $info['file']['savename'];

$data['filename'] = $fileName;

$data['filepath'] = './Uploads/'.$info['file']['savepath'].$fileName;

$result = M('daorulist')->add($data);

$this->importExcel('./Uploads/'.$info['file']['savepath'].$fileName);

}

}

/**

*

* 导入Excel文件

*/

public function importExcel($fileName) {

header("content-type:text/html;charset=utf-8");

//引入PHPExcel类

import('Org.Util.PHPExcel');

import('Org.Util.PHPExcel.Reader.Excel5','','.php');

//vendor('PHPExcel');

//vendor('PHPExcel.IOFactory');

//vendor('PHPExcel.Reader.Excel5');

//文件路径

$filePath = $fileName;

//实例化PHPExcel类

$PHPExcel = new \PHPExcel();

//默认用excel2007读取excel,若格式不对,则用之前的版本进行读取

import("Org.Util.PHPExcel.Reader.Excel2007",'','.php');

$PHPReader = new \PHPExcel_Reader_Excel2007();

if (!$PHPReader->canRead($filePath)) {

$PHPReader = new \PHPExcel_Reader_Excel5();

if (!$PHPReader->canRead($filePath)) {

echo 'no Excel';

return;

}

}

//读取Excel文件

$PHPExcel = $PHPReader->load($filePath);

//读取excel文件中的第一个工作表

$rows = $PHPExcel->getSheet(0)->toArray();//toArray函数把获取的excel数据转换成数组

unset($rows[0]);

foreach($rows as $v) {

$cno = $v[0];

$kno = $v[1];

$color = $v[2];

$size = $v[3];

$price = $v[4];

$num = $v[5];

if(empty($cno) || empty($kno) || empty($color) || empty($size) || empty($price) || empty($num)){

continue;

}

$m = M('stock');

$yanse = $daxiao = array();

$yanse = M('yanse')->where(array('color'=>$color,'shop'=>$_SESSION['user']['nid']))->find();

$daxiao = M('daxiao')->where(array('size'=>$size,'shop'=>$_SESSION['user']['nid']))->find();

$data = array();

$data = array(

'cno'=>$cno,

'kno'=>$kno,

'color'=>$yanse['id'],

'size'=>$daxiao['id'],

'price'=>$price,

'shop'=>$_SESSION['user']['nid'],

'num'=>$num,

'ctime'=>time(),

'add_time'=>time(),

'ip'=>getIp(),

'name'=>$_SESSION['user']['username']

);

$dat = array();

$dat = $m->where(array('cno'=>$data['cno'],'color'=>$data['color'],'size'=>$data['size'],'kno'=>$data['kno']))->find();

if($dat){

$data['num'] = $dat['num']+ $num;

$m->where(array('id'=>$dat['id']))->save($data);

$number = $dat['id'];

} else {

$number = $m->add($data);

}

M('srecord')->add($data);

}

if ($number > 0) {

$this->success( "导入成功!",U('Daoru/upload_list'));

} else {

$this->error("导入失败!!");

}

}

public function upload_list(){

$count=M('daorulist')->where(array('shop'=>$_SESSION['user']['nid']))->count();

$Page = $this->page($count);

$show = $Page->show();

$this->list=M('daorulist')->where(array('shop'=>$_SESSION['user']['nid']))->limit($Page->firstRow.','.$Page->listRows)->order ('id asc') ->select();

$this->assign('page',$show);

$this->display();

}

}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: