导入php利用phpexcel插件实现数据的导入和导出(支持csvxlsxlsx格式和超过26个字段列)

php套件  时间:2021-02-28  阅读:()

一、导入这其中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导入的数据属于哪一期的 比如

* @param4  table_head用来判断excel表格是否有表头默认有

* @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(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));

//echo ;exit;

//如果有表头则过滤掉第一行if($table_head)unset($res[1] );

//循环写入不一次性写入防止有错误的记录错误记录会记录下第一个字段到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 ->logFile($logfile,$v[0] );

}

}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($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、前端代码

<!doctype html>

<html>

<head>

<title>专利数据检索平台2015年08月</title>

<meta charset="utf-8" />

<meta name="keywords" content="北京市知识产权信息服务平台" />

<meta name="description" content="专利数据检索平台北京市知识产权信息服务平台"/>

<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="baidu-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/jquery-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/dtree.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" 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" >

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w

3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><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:20px auto;}

.table{ margin-top:20px; }

.table thead tr{text-align:center;}

.table th{ font-weight:bold; vertical-align:middle;}

.table td{ vertical-align:middle;}

.table input, .table textarea, .table select{margin-bottom:0px; }

.title h4{ border-bottom:2px solid #01AFD4; padding-bottom:8px;}

.title a{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>

.mainlevel DIV {width:1050px; }

#mian{ width:95%; margin:20px auto;}

.table{ margin-top:20px; }

.table thead tr{text-align:center;}

.table th{ font-weight:bold; vertical-align:middle;}

.table td{text-align:center;}

.table input, .table textarea, .table select{margin-bottom:0px; }

.red{color:red;}

</style>

<div id="mian">

<span id="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"><center>排序</center></th>

<th rowspan="2"><center>区县</center></th>

<th rowspan="2"><center>当月累计</center></th>

<th rowspan="2"><center>发明</center></th>

<th rowspan="2"><center>实用新型</center></th>

<th rowspan="2"><center>外观设计</center></th>

<th colspan="6"><center>三种专利申请中</center></th>

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

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

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

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

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

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

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

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

<td><center><b>8</b></center></td><td><center><b>顺义区</b></center></td>

湖北50G防御物理服务器( 199元/月 ),国内便宜的高防服务器

4324云是成立于2012年的老牌商家,主要经营国内服务器资源,是目前国内实力很强的商家,从价格上就可以看出来商家实力,这次商家给大家带来了全网最便宜的物理服务器。只能说用叹为观止形容。官网地址 点击进入由于是活动套餐 本款产品需要联系QQ客服 购买 QQ 800083597 QQ 2772347271CPU内存硬盘带宽IP防御价格e5 2630 12核16GBSSD 500GB​30M​1个IP...

3G流量免费高防CDN 50-200G防御

简介酷盾安全怎么样?酷盾安全,隶属于云南酷番云计算有限公司,主要提供高防CDN服务,高防服务器等,分为中国境内CDN,和境外CDN和二个产品,均支持SSL。目前CDN处于内测阶段,目前是免费的,套餐包0.01一个。3G流量(高防CDN)用完了继续续费或者购买升级包即可。有兴趣的可以看看,需要实名的。官方网站: :点击进入官网云南酷番云计算有限公司优惠方案流量3G,用完了不够再次购买或者升级套餐流量...

41云,服务器8折优惠券,200G TCP防御

41云怎么样?41云是国人主机品牌,目前经营产品有国内外云服务器、CDN(高防CDN)和物理机,其中国内外云服务器又细分小类有香港限流量VPS、香港大带宽VPS、香港弹性自选VPS、香港不限流VPS、香港BGP线路VPS、香港Cera+大带宽机器、美国超防VPS、韩国原生VPS、仁川原生VPS、日本CN2 VPS、枣庄高防VPS和金华高防VPS;物理机有美国Cera服务器、香港单程CN2服务器、香...

php套件为你推荐
google竞价排名谷歌是靠什么关键词排名的?谷歌竞价有什么特点?有什么优势?外网和内网内网和外网是什么意思啊??依赖注入请问下依赖注入的三种方式的区别中小企业信息化中小企业信息化途径有哪些安全漏洞计算机一般存在哪些安全漏洞?如何清理ie缓存怎么样清理IE缓存?去鼠标加速度去鼠标加速到底有什么好处.......防钓鱼无线防钓鱼 什么意思首页无法修改主页无法更改怎么办小米什么时候抢购小米手机现在还需要抢购吗?什么时候才不用抢购?
济南域名注册 希网动态域名 阿里云os stablehost jsp主机 php主机 美国便宜货网站 光棍节日志 web服务器架设软件 免空 33456 湖南idc 广州虚拟主机 阿里云邮箱登陆 汤博乐 香港博客 windowsserverr2 rsync 遨游论坛 隐士ddos 更多