仅留作记录使用:/**
*读取文件方案一
*/
publicfunctionreadExcel()
{
require_onceVENDOR_PATH.'PhpExcel/PHPExcel/IOFactory.php';
//循环遍历数据
$objReader=\PHPExcel_IOFactory::createReader('Excel');//创建一个的读取对象
$file=getcwd().'/internalAPNAndMCC.xlsx';
$objPHPExcel=$objReader->load($file);//读取一个xlsx文件
foreach($objPHPExcel->getWorksheetIterator()as$worksheet){//遍历工作表
echo'Worksheet-',$worksheet->getTitle(),PHP_EOL;
foreach($worksheet->getRowIterator()as$row){//遍历行
echo'Rownumber-',$row->getRowIndex(),PHP_EOL;
$cellIterator=$row->getCellIterator();//得到所有列
$cellIterator->setIterateOnlyExistingCells(false);//让迭代器只对现有的单元进行循环
foreach($cellIteratoras$cell){//遍历列
if(!is_null($cell)){//如果列不是空就得到它的坐标和计算的值
echo'Cell-',$cell->getCoordinate(),'-',$cell->getCalculatedValue(),PHP_EOL;
}
}
}
}
}
使用TP3.2.3上传&导入数据库:/**
*批量导入产品
*/
publicfunctionp_bulk_import(){
$file=$_FILES['excel'];
if($file['name']){
$upload=new\Think\Upload();
$upload->maxSize=3145728;//设置附件上传大小
$upload->exts=array('xls','xlsx','csv');//设置附件上传类型
$upload->rootPath=UPLOAD_DIR;//设置附件上传根目录
$upload->savePath='excel/';//设置附件上传(子)目录
//$upload->autoSub=false;//是否使用子目录保存上传文件
$info=$upload->upload();
if(!$info){//上传错误提示错误信息
$this->error($upload->getError());
}else{
foreach($infoas$file){
$file_path=$file['savepath'].$file['savename'];
}
}
}
//引入PHPEXCEL类
require_onceVENDOR_PATH.'PhpExcel/PHPExcel/IOFactory.php';
require_onceVENDOR_PATH.'PhpExcel/PHPExcel.php';
//判断文件版本,选择对应的解析文件
if('xlsx'==$info['excel']['ext']){
require_onceVENDOR_PATH.'PhpExcel/PHPExcel/Reader/Excel.php';
$objReader=\PHPExcel_IOFactory::createReader('Excel');
}else{
require_onceVENDOR_PATH.'PhpExcel/PHPExcel/Reader/Excel5.php';
$objReader=\PHPExcel_IOFactory::createReader('Excel5');
}
//解析Excel文件
$objPHPExcel=$objReader->load(getcwd()."/".UPLOAD_DIR.$file_path);
//读取第一个工作表(编号从0开始)
$sheet=$objPHPExcel->getSheet(0);
//取得总行数
$highestRow=$sheet->getHighestRow();
//取得总列数
$highestColumn=$sheet->getHighestColumn();
//循环读取excel文件,读取一条,插入数组一条
for($j=2;$j<=$highestRow;$j++){
for($k='A';$k<=$highestColumn;$k++){
//读取单元格
$examPaper_arr[$j][$k]=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
}
}
$sum=0;
//重复总数
$user_repeat=0;
$user=M("apn_new");
$tour_level=M("product_new");
//开启事务
$user->startTrans();
foreach($examPaper_arras$key=>$value){
//print_r($key.'==>'.$value[A].'\r\n'.$value[B]);
if($user->where("tel='$value[C]'")->find()){
$user_repeat++;
}else{
$data['name']=empty($value['C'])?0:$value['C'];
$data['password']=empty($value['C'])?0:md5($value['C']);
$data['tel']=empty($value['C'])?0:$value['C'];
$data['create_time']=time();
$uid=$user->add($data);
if($uid){
//判断导游的类型,0:头目
if(0==$value['E']){
$tid=$tour_level->where("id_card='$value[D]'")->find();
if(!$tid){//未找到导游头目
$t_data['name']=empty($value['B'])?0:$value['B'];
$t_data['id_card']=empty($value['D'])?0:$value['D'];
$t_data['device_id']=$uid;
$t_data['created_time']=date("Y.m.d");
$t_data['level']=0;
$t_data['fid']=0;
$fid=$tour_level->add($t_data);
}else{
$fid=$tid;
}
}else{
$t_data['name']=empty($value['B'])?0:$value['B'];
$t_data['id_card']=empty($value['D'])?0:$value['D'];
$t_data['device_id']=$uid;
$t_data['created_time']=date("Y.m.d");
$t_data['level']=1;
$t_data['fid']=!isset($fid)?3:$fid;
$tour_level->add($t_data);
}
//提交事务
$user->commit();
}else{
//事务回滚
$user->rollback();
}
$sum++;
}
}
echo"上传结束
插入总数:".$sum.";重复总数:".$user_repeat;die;
}/**
*生成Excel、csv、pdf表格
*/
publicfunctiongeneralExcel()
{
//引入PHPEXCEL类
require_onceVENDOR_PATH.'PhpExcel/PHPExcel/IOFactory.php';
require_onceVENDOR_PATH.'PhpExcel/PHPExcel.php';
//判断文件版本,选择对应的解析文件
require_onceVENDOR_PATH.'PhpExcel/PHPExcel/Reader/Excel.php';
$objPHPExcel=new\PHPExcel();
//设置Excel表格参数
$objPHPExcel->getProperties()
->setCreator("MaartenBalliauw")
->setLastModifiedBy("MaartenBalliauw")
->setTitle("OfficeXLSXDocument")
->setSubject("OfficeXLSXDocument")
->setDescription("TestdocumentforOfficeXLSX,generatedusingPHPclasses.")
->setKeywords("officeopenxmlphp")
->setCategory("Testresultfile");
//给表格添加数据
$objPHPExcel->setActiveSheetIndex(0)//设置第一个内置表(一个xls文件里可以有多个表)为活动的
->setCellValue('A1','Hello')//给表的单元格设置数据
->setCellValue('B2','world!')//数据格式可以为字符串
->setCellValue('C1',12)//数字型
->setCellValue('D2',12)//
->setCellValue('D3',true)//布尔型
->setCellValue('D4','=SUM(C1:D2)');//公式
//得到当前活动的表,注意下文教程中会经常用到$objActSheet
$objActSheet=$objPHPExcel->getActiveSheet();
//位置bbb*为下文代码位置提供锚
//给当前活动的表设置名称
$objActSheet->setTitle('Simple2222');
//日期格式锚:bbb
//获得秒值变量
$dateTimeNow=time();
//三个表格分别设置为当前实际的日期格式、时间格式、日期和时间格式
//首先将单元格的值设置为由PHPExcel_Shared_Date::PHPToExcel方法转换后的excel格式的值,然后用过得到该单元格的样式里面数字样式再设置显示格式
$objActSheet->setCellValue('C9',\PHPExcel_Shared_Date::PHPToExcel($dateTimeNow));
$objActSheet->getStyle('C9')->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);
$objActSheet->setCellValue('C10',\PHPExcel_Shared_Date::PHPToExcel($dateTimeNow));
$objActSheet->getStyle('C10')->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4);
$objActSheet->setCellValue('C10',\PHPExcel_Shared_Date::PHPToExcel($dateTimeNow));
$objActSheet->getStyle('C10')->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4);
//将E4到E13的数字格式设置为EUR
$objPHPExcel->getActiveSheet()->getStyle('E4:E13')->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);
//设置列的宽度
$objActSheet->getColumnDimension('B')->setAutoSize(true);//内容自适应
$objActSheet->getColumnDimension('A')->setWidth(30);//30宽
//创建一个富文本框(实例)
$objRichText=new\PHPExcel_RichText();
$objRichText->createText("unlessspecifiedotherwiseontheinvoice.");
//将文字写入到A18单元格中
$objPHPExcel->getActiveSheet()->getCell("A28")->setValue("$objRichText");
//合并、拆分单元格
$objPHPExcel->getActiveSheet()->mergeCells('A28:B28');//A28:B28合并
$objPHPExcel->getActiveSheet()->unmergeCells('A28:B28');//A28:B28再拆分
//object
$objWriter=\PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel');
$objWriter->save('myexcel.xlsx');
//设置表格样式和数据格式
//设置默认的字体和文字大小
$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial');
$objPHPExcel->getDefaultStyle()->getFont()->setSize(20);
//2、提示下载文件
//生成excel格式的xls文件
//header('Content-Type:application/vnd.ms-excel');
//header('Content-Disposition:p_w_upload;filename="01simple.xls"');
//header('Cache-Control:max-age=0');
//$objWriter=\PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
//$objWriter->save('php://output');
//exit;
//生成excel格式的xlsx文件
header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition:p_w_upload;filename="01simple.xlsx"');
header('Cache-Control:max-age=0');
$objWriter=\PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel');
$objWriter->save('php://output');
exit;
//下载一个pdf文件
//header('Content-Type:application/pdf');
//header('Content-Disposition:p_w_upload;filename="01simple.pdf"');
//header('Cache-Control:max-age=0');
//$objWriter=\PHPExcel_IOFactory::createWriter($objPHPExcel,'PDF');
//$objWriter->save('php://output');
//exit;
//生成一个pdf文件
//$objWriter=\PHPExcel_IOFactory::createWriter($objPHPExcel,'PDF');
//$objWriter->save('a.pdf');
//CSV文件
$objWriter=\PHPExcel_IOFactory::createWriter($objPHPExcel,'CSV')->setDelimiter(',')//设置分隔符
->setEnclosure('"')//设置包围符
->setLineEnding("\r\n")//设置行分隔符
->setSheetIndex(0)//设置活动表
->save(str_replace('.php','.csv',__FILE__));
var_dump($objWriter);
}