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页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、一、导入(这其中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表格是否有表头,默

2、认有*date:2015/11/26*author:dingling*/private function excelToTable($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(strtolowe

3、r(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

4、_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=&qu

5、ot;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->

6、show_msg("未能指定明确的表!","/search/patentStatistics/uploadRawdata");/定义导入失败记录的文档 $logfile = $savePath.$str.'.txt'/读取excel,存成数组,该数组的key是从1开始$res = $this->excelToArray($savePath.$file_name,end($file_types);/echo 12321321;exit;/如果有表头,则过滤掉第一行if($table_head)unset($res1);/循环写入,不一

7、次性写入,防止有错误的记录;错误记录会记录下第一个字段到txt文档中去foreach($res as $k =>$v)foreach($fields as $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 ->logFil

8、e($logfile,$v0);if(file_get_contents($logfile)return $logfile;elsereturn true;/*方法名:excelToArray*作用:【私有】将excel数据转换成数组*param1:filename excel文件名*param2:filetype excel格式(xls、xlsx、csv)*param3:encode 编码格式,默认utf8*return:返回2维数组,最小的key为1*date:2015/11/26*author:dingling*/private function excelToArray($filena

9、me,$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')$objRead

10、er = PHPExcel_IOFactory:createReader('CSV'); $objReader->setReadDataOnly(true); $objPHPExcel = $objReader->load($filename); $objWorksheet = $objPHPExcel->getActiveSheet();$highestRow = $objWorksheet->getHighestRow();$highestColumn = $objWorksheet->getHighestColumn();$highestCo

11、lumnIndex = 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; 二、导出(

12、该功能支持页面上html中table表格直接导出)1、前端代码<!doctype html><html><head><title>专利数据检索平台2015年08月</title><meta charset="utf-8" /><meta name="keywords" content="北京市知识产权信息服务平台" /><meta name="description" content="专利数据检索平台 北京市知识产

13、权信息服务平台" /><meta name="viewport" content="width=device-width, initial-scale=1" /><meta property="wb:webmaster" content="3c67ef6a26cfe34e" /><link rel="apple-touch-icon-precomposed" href="" /><meta name="bai

14、du-site-verification" content="5fNm7bQabR" /><meta http-equiv="X-UA-Compatible" content="IE=8" /><script type="text/javascript" src="/js/placeholder.js"></script><script type="text/javascript" src="/js/jque

15、ry-1.8.3.min.js"></script><script type="text/javascript" src="/js/admin.js"></script><link href="/js/dtree/dtree.css" rel="stylesheet" type="text/css"><script type="text/javascript" src="/js/dtree/dtr

16、ee.js"></script><link href="/css/index.css" rel="stylesheet" type="text/css"><link href="/css/navcss.css" rel="stylesheet" type="text/css"> <link href="/css/govnet/self.css" rel="stylesheet"

17、type="text/css"> <!-<link href="/css/index.css" rel="stylesheet" type="text/css">-><link href="/css/common.css" rel="stylesheet" type="text/css"></head><body class="body_index" ><!DOCT

18、YPE html PUBLIC "-/W3C/DTD XHTML 1.0 Transitional/EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />&

19、lt;title>无标题文档</title><script type="text/javascript" src="/bootstrap/jquery.min.js"></script><link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet"><style>.body_index background:none !important;#mian width:95%; margin:2

20、0px auto;.table margin-top:20px;.table thead trtext-align:center;.table th font-weight:bold; vertical-align:middle;.table td vertical-align:middle;.table input,.table textarea,.table selectmargin-bottom:0px;.title h4 border-bottom:2px solid #01AFD4; padding-bottom:8px;.title amargin-top:-50px;.title

21、padding-bottom:10px;.handle_labelfloat:left;margin-top: 5px;margin-left: 15px; width:100px;text-align:right;.navwidth:auto !important;background:none !important;.table2 margin-top:0px !important; margin-bottom:0px !important;.hidedisplay:none;</style><style>.mainlevel DIV width:1050px;#m

22、ian width:95%; margin:20px auto;.table margin-top:20px;.table thead trtext-align:center;.table th font-weight:bold; vertical-align:middle;.table tdtext-align:center;.table input,.table textarea,.table selectmargin-bottom:0px;.redcolor:red;</style><div id="mian"><span id=&quo

23、t;export_data" style="float:right;cursor:pointer;">导出</span><table class="table table-bordered"><tr><th colspan='12'><center>2015年08月北京地区各区县专利授权情况</center></th></tr><tr><th rowspan="2"><cente

24、r>排序</center></th><th rowspan="2"><center>区县</center></th><th rowspan="2"><center>当月累计</center></th><th rowspan="2"><center>发明</center></th><th rowspan="2"><center&

25、gt;实用新型</center></th><th rowspan="2"><center>外观设计</center></th><th colspan="6"><center>三种专利申请中</center></th></tr><tr><th><center>个人</center></th><th><center>职务小计</center

26、></th><th><center>大专院校</center></th><th><center>科研单位</center></th><th><center>企业</center></th><th><center>机关团体</center></th></tr><tr><td><center><b></b></ce

27、nter></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

28、</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><

29、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

30、><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<

31、/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

32、>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>

33、<td>55</td><td>361</td><td>34</td><td>5</td><td>318</td><td>4</td></tr><tr><td><center><b>5</b></center></td><td><center><b>东城区</b></center></td>

34、;<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>&l

35、t;/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<

36、/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&l

37、t;/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

38、</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>&l

39、t;/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>

40、0</td></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&

41、gt;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

42、>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>&l

43、t;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><t

44、r><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</t

45、d><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

46、><td>3</td><td>2</td><td>19</td><td>0</td><td>0</td><td>19</td><td>0</td></tr><tr><td><center><b>15</b></center></td><td><center><b>门头沟区</b>&

47、lt;/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>

48、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<

49、;/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&

50、gt;<td>1</td><td>0</td><td>0</td><td>1</td><td>0</td></tr><tr><td class="red"><center><b>18</b></center></td><td class="red"><center><b>北京经济技术开发区</b>

51、;</center></td><td class="red">191</td><td class="red">67</td><td class="red">112</td><td class="red">12</td><td class="red">14</td><td class="red">177</td>

52、<td class="red">0</td><td class="red">1</td><td class="red">176</td><td class="red">0</td></tr><tr><td colspan='12'><span style="text-align:right;">注:开发区数据不计算在合计总数中<sp

53、an></td></tr></table></div><script>window.onload=function()$("#export_data").click(function()/获取标题var title = $(".table").find("tr").eq(0).find('th').html();/获取总行数var line_num = $(".table tr").length;/获取最大列数var max_col_

54、num = $(".table").find("tr").eq(0).find('th').attr('colspan');/获取各行列数 数组col_num_arr 字符串col_num_strvar col_num_arr = new Array();/获取各行td或者th的个数var total_td_num = 0;for(var i=0;i<line_num;i+)col_num_arri = $(".table").find("tr").eq(i).find(

55、9;td').length;if(col_num_arri='')col_num_arri = $(".table").find("tr").eq(i).find('th').length;total_td_num = total_td_num + col_num_arri;var col_num_str = col_num_arr.join(',');/alert(col_num_str);/获取各行th的个数var th_col_num_arr = ;for(var i=0;i<line_

56、num;i+)var j = $(".table").find("tr").eq(i).find('th').length;if(j != 0)th_col_num_arri = j;var th_col_num_str = th_col_num_arr.join(',');/alert(th_col_num_str);/获取所有th值var th_data_arr = ;var th_num = $(".table").find('th').length;for(var i=0;i&l

57、t;th_num;i+)var val = $(".table").find('th').eq(i).html();if(typeof(val)!='undefined'&&typeof(val)!='')th_data_arri = val;var th_data_str = th_data_arr.join('');/alert(th_data_arr0);alert(th_data_str);/获取所有td值var td_data_arr = ;var td_num = $(".

58、table").find('td').length;for(var i=0;i<td_num;i+)var val = $(".table").find('td').eq(i).html();if(typeof(val)!='undefined')td_data_arri = val;var td_data_str = td_data_arr.join('');$.ajax(url:"/search/patentStatistics/exportData",type:&quo

59、t;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><script src="</body></html></body

60、></html>2、后端代码/*方法名:exportData*作用:导出数据*date2015/03/26*authordingling*return excel文件路径*/public function exportDataAction()$title = strip_tags($_POST'title');/excel第一行标题$max_col_num = $_POST'max_col_num'/最大列数$th_num_arr = explode(',',trim($_POST'th_col_num_str'

61、);/取th各行的列数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_data as $k=>$v)$th_data2 = strip_tags($v);/将一维数组(值)按照另一个数组(个数)拆分成二维数组foreach($t

62、h_num_arr as $k=>$v)foreach($th_data2 as $key=>$val)if($key<$v)$temp = $val;$th_data2 = array_values(array_diff($th_data2,$temp);$head = $temp;unset($temp);/补空foreach($head as $k=>$v)if(count($head$k)<$max_col_num)for($i=0;$i<$max_col_num-count($head$k);$i+)$temp = ''if($k=

63、0)$head2 = array_merge($head$k,$temp);else$head2 = array_merge($temp,$head$k);unset($temp);/获取所有td的值$td_data = explode('',trim($_POST'td_data_str');$data = array();foreach($td_data as $k=>$v)$data$k/$max_col_num$k%$max_col_num = strip_tags($v);$path = $this -> getExcel($title,$

64、title,$head2,$data);echo json_encode(array('href'=>$path) ;/*方法名:getExcel*作用:将数据转换为Excel格式*date2015/03/26*authordingling*param1文件名*param2sheet名称*param3字段名(必须二维数组)*param4数据*return excel文件*/private function getExcel($fileName,$fileName2,$headArr,$data)/对数据进行检验if(empty($data) | !is_array($da

65、ta)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('只能通过浏览器运行');/创建PHPExcel对象$objPHPExcel = new PHPExcel();$objProps = $objPHPExcel->getProperties();/设置表名称$objPHPExcel->setActiveSheetIndex(0) ->setCellVal

温馨提示

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

评论

0/150

提交评论