php利用phpexcel插件实现数据的导入和导出支持csvxlsxlsx格式和超过26个字段列.docx
- 文档编号:7613519
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:24
- 大小:22.49KB
php利用phpexcel插件实现数据的导入和导出支持csvxlsxlsx格式和超过26个字段列.docx
《php利用phpexcel插件实现数据的导入和导出支持csvxlsxlsx格式和超过26个字段列.docx》由会员分享,可在线阅读,更多相关《php利用phpexcel插件实现数据的导入和导出支持csvxlsxlsx格式和超过26个字段列.docx(24页珍藏版)》请在冰豆网上搜索。
php利用phpexcel插件实现数据的导入和导出支持csvxlsxlsx格式和超过26个字段列
一、导入(这其中show_msg和logFile是自定义函数)
/**
*方法名:
excelToTable
*作用:
【私有】将excel数据导入数据表中
*@param1:
file用户上传的文件信息
*@param2:
tableid用来区别是哪张表,1-statistics_rawdata_pct,2-statistics_rawdata_apply,3-statistics_rawdata_auth,4-statistics_rawdata_valid
*@param3:
month_number导入的数据属于哪一期的,比如201510
*@param4:
table_head用来判断excel表格是否有表头,默认有
*@date:
2015/11/26
*@author:
dingling
*/
privatefunctionexcelToTable($file,$tableid,$month_number,$table_head=1){
if(!
empty($file['name'])){
$file_types=explode(".",$file['name']);
$excel_type=array('xls','csv','xlsx');
//判断是不是excel文件
if(!
in_array(strtolower(end($file_types)),$excel_type)){
$this->show_msg("不是Excel文件,重新上传","/search/patentStatistics/uploadRawdata");
}
//设置上传路径
$savePath=_WWW_.'www/tmp/';
//以时间来命名上传的文件
$str=date('Ymdhis');
$file_name=$str.".".end($file_types);
//是否上传成功
$tmp_file=$file['tmp_name'];
if(!
copy($tmp_file,$savePath.$file_name)){
$this->show_msg("上传失败","/search/patentStatistics/uploadRawdata");
}
if($tableid=="1"){
$rawdata_obj=$this->rawdata_pctmodel;
}elseif($tableid=="2"){
$rawdata_obj=$this->rawdata_applymodel;
}elseif($tableid=="3"){
$rawdata_obj=$this->rawdata_authmodel;
}elseif($tableid=="4"){
$rawdata_obj=$this->rawdata_validmodel;
}else{
$this->show_msg("您要导入的数据表不存在!
","/search/patentStatistics/uploadRawdata");
}
if($rawdata_obj)
$fields=$rawdata_obj->returnFields();
else
$this->show_msg("未能指定明确的表!
","/search/patentStatistics/uploadRawdata");
//定义导入失败记录的文档
$logfile=$savePath.$str.'.txt';
//读取excel,存成数组,该数组的key是从1开始
$res=$this->excelToArray($savePath.$file_name,end($file_types));
//echo12321321;exit;
//如果有表头,则过滤掉第一行
if($table_head)
unset($res[1]);
//循环写入,不一次性写入,防止有错误的记录;错误记录会记录下第一个字段到txt文档中去
foreach($resas$k=>$v){
foreach($fieldsas$key=>$val){
if($v[$key]===null){
$v[$key]='null';
}
$data[$val]=$v[$key];
}
//该字段比较特殊,必须导入表中都有该字段
$data['month_number']=$month_number;
$result=$rawdata_obj->addSave($data);
unset($data);
if(!
$result){
$this->logFile($logfile,$v[0]);
}
}
if(file_get_contents($logfile))
return$logfile;
else
returntrue;
}
}
/**
*方法名:
excelToArray
*作用:
【私有】将excel数据转换成数组
*@param1:
filenameexcel文件名
*@param2:
filetypeexcel格式(xls、xlsx、csv)
*@param3:
encode编码格式,默认utf8
*@return:
返回2维数组,最小的key为1
*@date:
2015/11/26
*@author:
dingling
*/
privatefunctionexcelToArray($filename,$filetype,$encode='utf-8'){
if(strtolower($filetype)=='xls'){
$objReader=PHPExcel_IOFactory:
:
createReader('Excel5');
}elseif(strtolower($filetype)=='xlsx'){
$objReader=PHPExcel_IOFactory:
:
createReader('Excel2007');
}elseif(strtolower($filetype)=='csv'){
$objReader=PHPExcel_IOFactory:
:
createReader('CSV');
}
$objReader->setReadDataOnly(true);
$objPHPExcel=$objReader->load($filename);
$objWorksheet=$objPHPExcel->getActiveSheet();
$highestRow=$objWorksheet->getHighestRow();
$highestColumn=$objWorksheet->getHighestColumn();
$highestColumnIndex=PHPExcel_Cell:
:
columnIndexFromString($highestColumn);
$excelData=array();
for($row=1;$row<=$highestRow;$row++){
for($col=0;$col<$highestColumnIndex;$col++){
$excelData[$row][]=(string)$objWorksheet->getCellByColumnAndRow($col,$row)->getValue();
}
}
return$excelData;
}
二、导出(该功能支持页面上html中table表格直接导出)
1、前端代码
doctypehtml>
webmaster"content="3c67ef6a26cfe34e"/> -- DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http: //www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> //www.w3.org/1999/xhtml">
.body_index{background:
none!
important;}
#mian{width:
95%;margin:
20pxauto;}
.table{margin-top:
20px;}
.tabletheadtr{text-align:
center;}
.tableth{font-weight:
bold;vertical-align:
middle;}
.tabletd{vertical-align:
middle;}
.tableinput,.tabletextarea,.tableselect{margin-bottom:
0px;}
.titleh4{border-bottom:
1pxsolid#01AFD4;padding-bottom:
8px;}
.titlea{margin-top:
-50px;}
.title{padding-bottom:
10px;}
.handle_label{float:
left;margin-top:
5px;margin-left:
15px;width:
100px;text-align:
right;}
.nav{width:
auto!
important;background:
none!
important;}
.table2{margin-top:
0px!
important;margin-bottom:
0px!
important;}
.hide{display:
none;}
.mainlevelDIV{width:
1050px;}
#mian{width:
95%;margin:
20pxauto;}
.table{margin-top:
20px;}
.tabletheadtr{text-align:
center;}
.tableth{font-weight:
bold;vertical-align:
middle;}
.tabletd{text-align:
center;}
.tableinput,.tabletextarea,.tableselect{margin-bottom:
0px;}
.red{color:
red;}
right;cursor: pointer;">导出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- php 利用 phpexcel 插件 实现 数据 导入 导出 支持 csvxlsxlsx 格式 超过 26 字段
链接地址:https://www.bdocx.com/doc/7613519.html
copyright@ 2008-2022 冰点文档网站版权所有
经营许可证编号:鄂ICP备2022015515号-1