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

ThinkPHP导出Excel文件

2017-01-17 00:00 190 查看
PHP函数方法

//利用excel导出
function getExcel($fileName,$headArr,$data)
{
//判断数据是否是数组
vendor("excel.PHPExcel");
if (empty($data) || !is_array($data)) {
die("data must be a array");
}
//判断文件是否存在
if (empty($fileName)) {
exit;
}

$date = time();    //时间
$fileName .= "_{$date}.xlsx";    //文件名

//创建新的PHPExcel对象
$objPHPExcel = new \PHPExcel();
$objProps = $objPHPExcel->getProperties();

//设置表头
$key = ord("A");            //返回ASCII值
foreach ($headArr as $v) {
$colum = chr($key);        //ASCII值返回字符
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
$key += 1;
}

/*--------------开始从数据库提取信息插入Excel表中------------------*/
$column = 2;
$objActSheet = $objPHPExcel->getActiveSheet();
foreach ($data as $key => $rows) { //行写入
$span = ord("A");
foreach ($rows as $keyName => $value) {// 列写入
$j = chr($span);
$objActSheet->setCellValue($j . $column, $value);
$span++;
}
$column++;
}

/*--------------下面是设置其他信息------------------*/
$objPHPExcel->getActiveSheet()->setTitle('UserTable');        //重命名表
$objPHPExcel->setActiveSheetIndex(0);                    //设置sheet的起始位置
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(8);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(8);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(8);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(40);

/*--------------下面是设置保存路径------------------*/
//通过PHPExcel_IOFactory的写函数将上面数据写出来
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

//将输出重定向到一个客户端web浏览器(Excel2007)
header("Pragma: public");
header("Expires: 0");
header("Content-Type: application/vnd.ms-excel; charset==UTF-8");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=$fileName");
header("Content-Transfer-Encoding: binary ");

//脚本方式运行,保存在当前目录
$objWriter->save('php://output');
exit;
}

调用:

$fileName = "UserTable";

$headArr = array("序号","会员名","推荐人","姓名","身份证号","电话","银行开户行","银行账户姓名","银行卡","省份","城市","详细地址","添加时间");

$where["id"]=array("egt",$uid);

$data = db("aduser")->where($where)->field("id,uname,tname,name,idcode,uphone,bankaccount,bankaccountname,banknum,sheng,city,address,addtime")->select();

//var_dump($data);
//die;
if($data){

foreach ($data as $k=>$v)
{
$data[$k]['idcode'] = ','.$v['idcode'];
$data[$k]['banknum'] = ','.$v['banknum'];
$data[$k]['addtime'] = date('Y-m-d H:i:s',$v['addtime']);
}

$info=json_decode(json_encode($data),true);
}

getExcel($fileName,$headArr,$info);

---------------------------------------华丽的分割线-------------------------------------------

批量导入Excel:(thinkphp5)

PHP服务端:

public function business_import(Request $request)
{
$file = $request->file('excel');
if($file){
$infos = $file->validate(array("ext"=>"xls,xlsx"))->move(ROOT_PATH.'uploads/excel');
if($infos){
$file_url ="./uploads/excel/".date("Ymd",time())."/".$infos->getFilename();
$data = import_excel($file_url);
if ($data)
{
foreach ($data as $key => $val) {
$import_data[] = array(
"nickname" => $val["A"],
"telephone"=>$val["B"],
"wechart" =>$val["C"],
"status"=>1,
);
}
}
}else{
return $this->error("导入失败");
}
}
return $this->fetch();
}

函数方法:

/**
* 导入excel文件
* @param  string $file excel文件路径
* @return array        excel文件内容数组
*/
function import_excel($file){
// 判断文件是什么格式
$type = pathinfo($file);
$type = strtolower($type["extension"]);
$type=$type==='csv' ? $type : 'Excel5';
ini_set('max_execution_time', '0');
vendor('excel.PHPExcel');
// 判断使用哪种格式
$objReader = PHPExcel_IOFactory::createReader($type);
$objPHPExcel = $objReader->load($file);
$sheet = $objPHPExcel->getSheet(0);
// 取得总行数
$highestRow = $sheet->getHighestRow();
// 取得总列数
$highestColumn = $sheet->getHighestColumn();
//循环读取excel文件,读取一条,插入一条
$data=array();
//从第一行开始读取数据
$keys=0;
for($j=2;$j<=$highestRow;$j++){
//从A列读取数据
for($k='A';$k<=$highestColumn;$k++){
// 读取单元格
$data[$keys][$k]=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
}
$keys++;
}
return $data;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息