<?php | |
/** | |
用的是tinkphp Onethink | |
例子: | |
$info['set_sheet_name'] = array('模板','填表说明'); | |
$info['set_aligncenter'][0] = array('A1','B1','C1','D1','E1','F1'); | |
$info['set_fontcolor'][0] = array('A1','F1'); | |
$info['set_BorderStyle'][0] = 'A1:F20'; | |
$info['set_width'][0] = array( | |
'A'=>'20', | |
'B'=>'20', | |
'C'=>'20', | |
'D'=>'20', | |
'E'=>'20', | |
'F'=>'20', | |
); | |
//限制下拉菜单 | |
$subject = D('Subject')->getField('name',true); | |
$subject_str = '"'.implode(',',$subject).'"'; | |
$section = C('SECTION_TYPE'); | |
$section_str = '"'.implode(',',$section).'"'; | |
$new_arr = array(); | |
for($i=2;$i<21;$i++){ | |
$new_arr1 = array( | |
'B'.$i=>'"男,女"', | |
'D'.$i=>'"汉族,蒙古族,回族,藏族,维吾尔族,苗族,彝族,壮族,布依族,朝鲜族,满族,侗族,瑶族,白族,土家族,哈尼族,哈萨克族,傣族,黎族,傈僳族,佤族,畲族,高山族,拉祜族,水族,东乡族,纳西族,景颇族,柯尔克孜族,土族,达斡尔族,仫佬族,羌族,布朗族,撒拉族,毛难族,仡佬族,锡伯族,阿昌族,普米族,塔吉克族,怒族,乌孜别克族,俄罗斯族,鄂温克族,德昂族,保安族,裕固族,京族,塔塔尔族,独龙族,鄂伦春族,赫哲族,门巴族,珞巴族,基诺族,穿青人族,其他,外国血统中国籍人士"', | |
'F'.$i=>$subject_str, | |
'E'.$i=>$section_str | |
); | |
$new_arr = array_merge($new_arr,$new_arr1); | |
} | |
$info['set_Validation'][0] = $new_arr; | |
$data = array( | |
array( | |
'A1'=>'姓名', | |
'B1'=>'性别', | |
'C1'=>'出生日期', | |
'D1'=>'民族', | |
'E1'=>'学段', | |
'F1'=>'科目', | |
), | |
array( | |
'A1'=>'1、姓名、科目必填', | |
'A2'=>'2、出生日期格式为“20080101”', | |
'A3'=>'3、性别、民族、学段、科目为下拉列表,请不要自行编辑,如果教师有多个科目,请填写一个主要科目,其他科目在系统中自行维护', | |
'A4'=>'4、文件名教师信息后加学校名称', | |
) | |
); | |
$filename = C('WEB_SITE_TITLE').'标题'; | |
exportExcelFun($filename,$data,$info); | |
*/ | |
/** | |
* @param $file_name 保存文件名 | |
* @param $data 保存数据 | |
* $data 例子: | |
* array( | |
* '0'=>array(//第一个工作表 | |
* 'A1'=>'值', | |
* 'B1'=>'值' | |
* ) | |
* '1'=>array(//第二个工作表 | |
* 'A1'=>'值', | |
* 'B1'=>'值' | |
* ) | |
* ) | |
* | |
* @param $info 设置格式 | |
* @set_sheet_name:工作薄名称(key 第几个工作表,val 设置值) | |
* @set_height:单元格高度(key:第几个工作表,v->k第几行,v->v:多高) | |
* @set_width:设置宽度 同上 | |
* @set_aligncenter:居中显示(k:工作表,val array居中项) | |
* @set_fontcolor:设置红色字 同↑ | |
* @set_wrapText:设置文字自动换行 同↑ | |
* @set_mergeCells:合并单元格 同↑ | |
* @set_Validation:设置数据有效性(key工作表,v->k单元格,v->v单元格值'"列表项1,列表项2,列表项3"') | |
* @set_BorderStyle:设置边框颜色(key 工作表,v:A1:F20) | |
* @set_background:设置背景色(key 工作表, v->0 A1:F20 v-1 颜色) | |
* @return array | |
* @throws PHPExcel_Exception | |
* @author WD-QD-PHP-Yu <[email protected]> | |
* 利用phpExcel导出EXCEL通用代码 | |
*/ | |
function exportExcelFun($file_name,$data,$info = array()){ | |
if(empty($file_name) || empty($data)){ | |
return array("error"=>0,'message'=>'参数错误!'); | |
} | |
Vendor("PHPExcel.PHPExcel"); | |
$objPHPExcel = new \PHPExcel(); | |
$kapu = "命名"; | |
$objPHPExcel->getProperties()->setCreator($kapu) | |
->setLastModifiedBy($kapu) | |
->setTitle($kapu) | |
->setSubject($kapu) | |
->setDescription($kapu) | |
->setKeywords($kapu) | |
->setCategory($kapu); | |
//设置值 | |
foreach ($data as $key=>$val){ | |
if($key > 0){ | |
$objPHPExcel->createSheet(); | |
} | |
} | |
//设置名字 | |
if($info['set_sheet_name']){ | |
foreach ($info['set_sheet_name'] as $k=>$v){ | |
$objPHPExcel->setActiveSheetIndex($k)->setTitle($v);//设置名字 | |
} | |
} | |
//合并单元格 | |
if($info['set_mergeCells']){ | |
foreach ($info['set_mergeCells'] as $k=>$v){ | |
foreach ($v as $vv){ | |
$objPHPExcel->setActiveSheetIndex($k)->mergeCells($vv); | |
} | |
} | |
} | |
//设置高度格式 | |
if($info['set_height']){ | |
foreach ($info['set_height'] as $k=>$v){ | |
foreach ($v as $kk=>$vv) { | |
$objPHPExcel->setActiveSheetIndex($k)->getRowDimension($kk)->setRowHeight($vv); | |
} | |
} | |
} | |
//设置宽度格式 | |
if($info['set_width']){ | |
foreach ($info['set_width'] as $k=>$v){ | |
foreach ($v as $kk=>$vv){ | |
$objPHPExcel->setActiveSheetIndex($k)->getColumnDimension($kk)->setWidth($vv); | |
} | |
} | |
} | |
//设置居中 | |
if($info['set_aligncenter']){ | |
foreach ($info['set_aligncenter'] as $k=>$v){ | |
foreach ($v as $vv){ | |
$objPHPExcel->setActiveSheetIndex($k)->getStyle($vv)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::VERTICAL_CENTER); | |
$objPHPExcel->setActiveSheetIndex($k)->getStyle($vv)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); | |
} | |
} | |
} | |
//设置红色字 | |
if($info['set_fontcolor']){ | |
foreach ($info['set_fontcolor'] as $k=>$v){ | |
foreach ($v as $vv){ | |
$objPHPExcel->setActiveSheetIndex($k)->getStyle($vv)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED); | |
} | |
} | |
} | |
//文字自动换行 | |
if($info['set_wrapText']){ | |
foreach ($info['set_wrapText'] as $k=>$v){ | |
foreach ($v as $vv){ | |
$objPHPExcel->setActiveSheetIndex($k)->getStyle($vv)->getAlignment()->setWrapText(true); | |
} | |
} | |
} | |
//设置边框 | |
if($info['set_BorderStyle']){ | |
foreach ($info['set_BorderStyle'] as $k=>$v) { | |
foreach ($v as $vv) { | |
$objPHPExcel->setActiveSheetIndex($k)->getStyle($vv)->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); | |
} | |
} | |
} | |
//设置格式有效性 | |
if($info['set_Validation']){ | |
foreach ($info['set_Validation'] as $k=>$v){ | |
foreach ($v as $kk=>$vv){ | |
$objValidation = $objPHPExcel->setActiveSheetIndex($k)->getCell($kk)->getDataValidation(); //这一句为要设置数据有效性的单元格 | |
$objValidation -> setType(\PHPExcel_Cell_DataValidation::TYPE_LIST) | |
-> setErrorStyle(\PHPExcel_Cell_DataValidation::STYLE_INFORMATION) | |
-> setAllowBlank(false) | |
-> setShowInputMessage(true) | |
-> setShowErrorMessage(true) | |
-> setShowDropDown(true) | |
-> setErrorTitle('输入的值有误') | |
-> setError('您输入的值不在下拉框列表内.') | |
// -> setPromptTitle('设备类型') | |
-> setFormula1($vv); | |
} | |
} | |
} | |
//设置背景色 | |
if($info['set_background']){ | |
foreach ($info['set_background'] as $k=>$v){ | |
$objPHPExcel->setActiveSheetIndex($k)->getStyle($v[0])->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); | |
$objPHPExcel->setActiveSheetIndex($k)->getStyle($v[0])->getFill()->getStartColor()->setARGB($v[1]); | |
} | |
} | |
foreach ($data as $key=>$val){ | |
foreach ($val as $k=>$v){ | |
$objPHPExcel->setActiveSheetIndex($key)->setCellValue($k,$v); | |
} | |
} | |
getFile($objPHPExcel,$file_name); | |
} | |
/** | |
* @param $excel phpexcel对象 | |
* @param $filename | |
* @param string $filetype | |
* @throws PHPExcel_Reader_Exception | |
* @author Mayicode <[email protected]> | |
* exlcel导出到文件 | |
*/ | |
function getFile($excel, $filename, $filetype = '') | |
{ | |
Vendor("PHPExcel.PHPExcel.IOFactory"); | |
header('Cache-Control: max-age=0'); | |
header('Cache-Control: max-age=1'); | |
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past | |
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified | |
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1 | |
header('Pragma: public'); // HTTP/1.0 | |
switch ($filetype) { | |
case '2003': | |
header('Content-Type: application/vnd.ms-excel'); | |
header('Content-Disposition: attachment;filename="' . $filename . '.xls"'); | |
$objWriter = \PHPExcel_IOFactory::createWriter($excel, 'Excel5'); | |
$objWriter->save('php://output'); | |
break; | |
default: | |
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); | |
header('Content-Disposition: attachment;filename="' . $filename . '.xlsx"'); | |
$objWriter = \PHPExcel_IOFactory::createWriter($excel, 'Excel2007'); | |
$objWriter->save('php://output'); | |
} | |
exit; | |
} | |
/** | |
* @param $filePath | |
* @return array | |
* @throws PHPExcel_Reader_Exception | |
* @author Mayicode <[email protected]> | |
* 利用phpExcel 导入Excel | |
*/ | |
function importExeclFun($filePath){ | |
if(!file_exists($filePath)){ | |
return array("error"=>0,'message'=>'file not found!'); | |
} | |
Vendor("PHPExcel.PHPExcel.IOFactory"); | |
$objReader = \PHPExcel_IOFactory::createReader('Excel2007'); | |
if(!$objReader->canRead($filePath)){ | |
$objReader = \PHPExcel_IOFactory::createReader('Excel5'); | |
if(!$objReader->canRead($filePath)){ | |
return array("error"=>0,'message'=>'file not found!'); | |
} | |
} | |
$objReader->setReadDataOnly(true); | |
try{ | |
$PHPReader = $objReader->load($filePath); | |
}catch(Exception $e){} | |
if(!isset($objReader)) return array("error"=>0,'message'=>'read error!'); | |
//获取工作表的数目 | |
$sheetCount = $PHPReader->getSheetCount(); | |
if($sheetCount > 0){ | |
for($i = 0;$i< $sheetCount; $i++){ | |
$excelData[]=$PHPReader->getSheet($i)->toArray(null, true, true, true); | |
} | |
}else{ | |
$excelData[]=$PHPReader->getSheet(0)->toArray(null, true, true, true); | |
} | |
unset($PHPReader); | |
unlink($filePath); | |
return array("error"=>1,"data"=>$excelData); | |
} |
thinkphp phpexcel
猜你喜欢
转载自www.cnblogs.com/jjchi/p/9446256.html
今日推荐
周排行