php利用phpexcel插件实现数据的导入和导出(支持csvxlsxlsx格式和超过26个字段列)解析_第1页
php利用phpexcel插件实现数据的导入和导出(支持csvxlsxlsx格式和超过26个字段列)解析_第2页
php利用phpexcel插件实现数据的导入和导出(支持csvxlsxlsx格式和超过26个字段列)解析_第3页
php利用phpexcel插件实现数据的导入和导出(支持csvxlsxlsx格式和超过26个字段列)解析_第4页
php利用phpexcel插件实现数据的导入和导出(支持csvxlsxlsx格式和超过26个字段列)解析_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、导入(这其中show_msg和logFile是自定义函数)***方法名:作用:@param1:excelToTable】将excel数据导入数据表中file用户上传的文件信息*@param2:tableid用来区别是哪张表,1-statistics_rawdata_pct,2-statistics_rawdata_apply,3-statistics_rawdata_auth,4-statistics_rawdata_valid**认有**@param3:@param4:@date:@author:month_number导入的数据属于哪一期的,比如201table_head用来判断excel表格是否有表头,默2015/11/26dinglingprivatefunctionexcelToTable($file,$tableid,$month_number,$table_head=1){if(!empty($file['name'])){$file_types=explode(".",$file['name']);$excel_type=array('xls','csv','xlsx');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'];ifif(!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;lse$this->show_msg("您要导入的数据表不存在!","/search/patentStatistics/uploadRawdata");}if($rawdata_obj)$fields=$rawdata_obj->returnFields();else$this->show_msg("未能指定明确的表!","/search/patentStatistics/uploadRawdata");//定义导入失败记录的文档$logfile=$savePath.$str.'.txt';$res=$this->excelToArray($savePath.$file_name,end($file_types));//echo12321321;exit;//如果有表头,则过滤掉第一行if($table_head)unset($res[1]);//循环写入,不一次性写入,防止有错误的记录;错误记录会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;elsereturntrue;}}**********private方法名作用@param1@param2@param3@return@date@authorfunctionexcelToArrayexcelToArrayexcel数组filenameexcel文件名filetypeexcel格式(xls、xlsx、csv)encode编码格式,默认utf82015/11/26dingling:::::::excelToArray($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();}}}二、导出(该功能支持页面上html中table表格直接导出)<!doctypehtml><html><head><metacharset="utf-8"/><metaname="keywords"content="北京市知识产权信息服务平台"/><metaname="description"content="专利数据检索平台北京市知识产权信息服务平台"<metaname="viewport"content="width=device-width,initial-scale=1"/><metaproperty="wb:webmaster"content="3c67ef6a26cfe34e"/><linkrel="apple-touch-icon-precomposed"href=""/><<metaname="baidu-site-verification"content="5fNm7bQabR"/><metahttp-equiv="X-UA-Compatible"content="IE=8"/><scripttype="text/javascript"src="/js/placeholder.js"></script><scripttype="text/javascript"src="/js/jquery-1.8.3.min.js"></script><scripttype="text/javascript"src="/js/admin.js"></script><linkhref="/js/dtree/dtree.css"rel="stylesheet"type="text/css"><scripttype="text/javascript"src="/js/dtree/dtree.js"></script><linkhref="/css/index.css"rel="stylesheet"type="text/css"><linkhref="/css/navcss.css"rel="stylesheet"type="text/css"><linkhref="/css/govnet/self.css"rel="stylesheet"type="text/css"><!--<linkhref="/css/index.css"rel="stylesheet"type="text/css">--><linkhref="/css/common.css"rel="stylesheet"type="text/css"></head><bodyclass="body_index"><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>无标题文档</title><scripttype="text/javascript"src="/bootstrap/jquery.min.js"></script><linkhref="/bootstrap/css/bootstrap.min.css"rel="stylesheet"><style>.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:2pxsolid#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;}</style><style>.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;}</style><divid="mian"><spanid="export_data"style="float:right;cursor:pointer;">导出</sp<tableclass="tabletable-bordered"><tr><thcolspan='12'><center>2015年08月北京地区各区县专利授权情况</center></th></tr><tr><throwspan="2"><center>排序</center></th><throwspan="2"><center>区县</center></th><throwspan="2"><center>当月累计</center></th><throwspan="2"><center>发明</center></th><throwspan="2"><center>实用新型</center></th><throwspan="2"><center>外观设计</center></th><thcolspan="6"><center>三种专利申请中</center></t</tr><tr><th><center>个人</center></th><th><center>职务小计</center></th><th><center>大专院校</center></th><th><center>科研单位</center></th><th><center>企业</center></th><th><center>机关团体</center></th></</tr>tr><td><center><b></b></center></td><td><center><b>总计</b></center></td><td>6814</td><td>2088</td><td>3763</td><td>963</td><td>828</td><td>5986</td><td>412</td><td>536</td><td>4920</td><td>118</td></tr><tr><td><center><b>1</b></center></td><td><center><b>海淀区</b></center></td><td>2157</td><td>823</td><td>1033</td><td>301</td><td>246</td><td>1911</td><td>264</td><td>337</td><td>1229</td><td>81</td></tr><tr><td><center><b>2</b></center></td><td><center><b>朝阳区</b></center></td><td>1181</td><td>569</td><td>407</td><td>205</td><<td>192</td><td>989</td><td>64</td><td>92</td><td>825</td><td>8</td></tr><tr><td><center><b>3</b></center></td><td><center><b>西城区</b></center></td><td>1095</td><td>259</td><td>758</td><td>78</td><td>51</td><td>1044</td><td>10</td><td>19</td><td>1001</td><td>14</td></tr><tr><td><center><b>4</b></center></td><td><center><b>昌平区</b></center></td><td>416</td><td>78</td><td>225</td><td>113</td><td>55</td><td>361</td><td>34</td><td>5</td><td>318</td><td>4</td></tr><tr><tr><td><center><b>5</b></center></td><td><center><b>东城区</b></center></td><td>393</td><td>100</td><td>262</td><td>31</td><td>37</td><td>356</td><td>0</td><td>9</td><td>340</td><td>7</td></tr><tr><td><center><b>6</b></center></td><td><center><b>丰台区</b></center></td><td>388</td><td>84</td><td>264</td><td>40</td><td>99</td><td>289</td><td>16</td><td>62</td><td>209</td><td>2</td></tr><tr><td><center><b>7</b></center></td><td><center><b>大兴区</b></center></td><td>387</td><td>84</td><td>254</td><td>49</td><<td>55</td><td>332</td><td>16</td><td>1</td><td>314</td><td>1</td></tr><tr><td><center><b>8</b></center></td><td><center><b>顺义区</b></center></td><td>304</td><td>21</td><td>228</td><td>55</td><td>19</td><td>285</td><td>0</td><td>0</td><td>285</td><td>0</td></tr><tr><td><center><b>9</b></center></td><td><center><b>通州区</b></center></td><td>164</td><td>18</td><td>109</td><td>37</td><td>29</td><td>135</td><td>6</td><td>2</td><td>127</td><td>0</td></tr><tr><tr><td><center><b>10</b></center></td><td><center><b>石景山区</b></center></td><td>147</td><td>33</td><td>82</td><td>32</td><td>10</td><td>137</td><td>0</td><td>8</td><td>128</td><td>1</td></tr><tr><td><center><b>11</b></center></td><td><center><b>房山区</b></center></td><td>66</td><td>7</td><td>52</td><td>7</td><td>14</td><td>52</td><td>2</td><td>1</td><td>49</td><td>0</td></tr><tr><td><center><b>12</b></center></td><td><center><b>怀柔区</b></center></td><td>58</td><td>7</td><td>44</td><td>7</td><<td>9</td><td>49</td><td>0</td><td>0</td><td>49</td><td>0</td></tr><tr><td><center><b>13</b></center></td><td><center><b>密云区</b></center></td><td>23</td><td>1</td><td>18</td><td>4</td><td>6</td><td>17</td><td>0</td><td>0</td><td>17</td><td>0</td></tr><tr><td><center><b>14</b></center></td><td><center><b>平谷区</b></center></td><td>21</td><td>1</td><td>17</td><td>3</td><td>2</td><td>19</td><td>0</td><td>0</td><td>19</td><td>0</td></tr><tr><tr><td><center><b>15</b></center></td><td><center><b>门头沟区</b></center></td><td>10</td><td>2</td><td>7</td><td>1</td><td>4</td><td>6</td><td>0</td><td>0</td><td>6</td><td>0</td></tr><tr><td><center><b>16</b></center></td><td><center><b>延庆区</b></center></td><td>3</td><td>0</td><td>3</td><td>0</td><td>0</td><td>3</td><td>0</td><td>0</td><td>3</td><td>0</td></tr><tr><td><center><b>17</b></center></td><td><center><b>其他</b></center></td><td>1</td><td>1</td><td>0</td><td>0</td><td>0</td><td>1</td><td>0</td><td>0</td><td>1</td><td>0</td></tr><tr></td>区</b></center></td></tr>class="red"><center><b>18</b></center>class="red"><center><b>北京经济技术开发class="red">191</td>class="red">67</td>class="red">112</td>class="red">12</td>class="red">14</td>class="red">177</td>class="red">0</td>class="red">1</td>class="red">176</td>class="red">0</td><tr><tdcolspan='12'><spanstyle="text-align:right;">注:开发区数据不计算在合计总数中<span></td></tr></table></div><script>window.onload=function(){$("#export_data").click(function(){//获取标题vartitle=$(".table").find("tr").eq(0).find('th').html();//获取总行数varline_num=$(".tabletr").length;//获取最大列数varvarmax_col_num=$(".table").find("tr").eq(0).find('th').attr('colspan');//获取各行列数数组col_num_arr字符串col_num_strvarcol_num_arr=newArray();vartotal_td_num=0;for(vari=0;i<line_num;i++){col_num_arr[i]=$(".table").find("tr").eq(i).find('td').length;if(col_num_arr[i]=='')col_num_arr[i]=$(".table").find("tr").eq(i).find('th').length;total_td_num=total_td_num+col_num_arr[i];}varcol_num_str=col_num_arr.join(',');//alert(col_num_st//获取各行th的个数varth_col_num_arr=[];for(vari=0;i<line_num;i++){varj=$(".table").find("tr").eq(i).find('th').length;if(j!=0)th_col_num_arr[i]=j;}varth_col_num_str=th_col_num_arr.join(',');//alert(th_col_num_str);//获取所有th值varth_data_arr=[];varth_num=$(".table").find('th').length;for(vari=0;i<th_num;i++){varval=$(".table").find('th').eq(i).html();if(typeof(val)!='undefined'&&typeof(val)!='')th_data_arr[i]=val;}varth_data_str=th_data_arr.join('@@@');//alert(th_data_arr[0]);alert(th_data_str);//获取所有td值vartd_data_arr=[];vartd_num=$(".table").find('td').length;for(vari=0;i<td_num;i++){varval=$(".table").find('td').eq(i).html();if(typeof(val)!='undefined')td_data_arr[i]=val;}vartd_data_str=td_data_arr.join('@@@');$.ajax({url:"/search/patentStatistics/exportData",type:"POST",data:{title:title,max_col_num:max_col_num,th_col_num_str:th_col_num_str,th_data_str:th_data_str,td_data_str:td_data_str},dataType:"json",success:function(data){//console.log(data.href);window.open(data.href);}}</script><scriptsrc="/public/js/jquery.min.js"></script></body></html></body></html>、后端代码*方法名:exportData*作用:导出数据*@date2015/03/26*@authordingling*@returnexcel文件路径publicfunctionexportDataAction(){$title=strip_tags($_POST['title']);//excel第一行标题$max_col_num=$_POST['max_col_num'];//最大列数$th_num_arr=explode(',',trim($_POST['th_col_num_str']));/array_shift($th_num_arr);//删除首行th$head_line=count($th_num_arr);//列标题的th行数$th_data=explode('@@@',trim($_POST['th_data_str']));array_shift($th_data);//删除首行th(就是第一行标题)$th_data2=array();foreach($th_dataas$k=>$v){$th_data2[]=strip_tags($v);}//将一维数组(值)按照另一个数组(个数)拆分成二维数组foreach($th_num_arras$k=>$v){foreach($th_data2as$key=>$val){if($key<$v)$temp[]=$val;}$th_data2=array_values(array_diff($th_data2,$temp$head[]=$temp;unset($temp);}//补空foreach($headas$k=>$v){if(count($head[$k])<$max_col_num){for($i=0;$i<$max_col_num-count($head[$k]);$i++){$temp[]='';}if($k==0)$head2[]=array_merge($head[$k],$temp);else$head2[]=array_merge($temp,$head}unset($temp);}//获取所有td的值$td_data=explode('@@@',trim($_POST['td_data_str']));$data=array();foreach($td_dataas$k=>$v){$data[$k/$max_col_num][$k%$max_col_num]=strip_tags($v);}$path=$this->getExcel($title,$title,$head2,$data);echojson_encode(array('href'=>$path));}***********private作用:将数据转换为Excel格式@date2015/03/26@authordingling@param1文件名@param2sheet名称@param3字段名(必须二维数组)@param4数据rnexcelfunctiongetExcel($fileName,$fileName2,$headArr,$data){//对数据进行检验if(empty($data)||!is_array($data)){die("数据必须为数组");}}//检查文件名if(empty($fileName)){exit;}//组装文件名$date=date("Y_m_d",time());$fileName.="_{$date}.xls";error_reporting(E_ALL);ini_set('display_errors',TRUE);ini_set('display_startup_errors',TRUE);date_default_timezone_set('PRC');if(PHP_SAPI=='cli')die('只能通过浏览器运行');$objPHPExcel=newPHPExcel();$objProps=$objPHPExcel->getProperties();//设置表名称$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1',$fileName2);//设置表头for($i=0;$i<count($headArr);$i++){$line_num=2;$line_num+=$i;$key=ord("A");//A--65$key2=ord("@");//@--64foreach($headArr[$i]as$v){if($key>ord("Z")){$key2+=1;$key=ord("A");$colum=chr($key2).chr($key);//超过26个字母时才会启用dingling20150626lseif($key2>=ord("A")){$$colum=chr($key2).

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论