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

inlicloud48元/月,云主机,2核1G/200Mbps,可选安徽/上海联通/广州移动/江门移动NAT

inlicloud怎么样?inlicloud(引力主机)主要产品为国内NAT系列VPS,目前主要有:上海联通NAT(200Mbps带宽)、宿州联通NAT(200Mbps带宽)、广州移动NAT(200Mbps带宽)。根据官方的说法国内的NAT系列VPS不要求备案、不要求实名、对中转要求也不严格,但是,禁止任何形式的回国!安徽nat/上海联通/广州移动/江门移动nat云主机,2核1G/200Mbps仅...

DiyVM:499元/月香港沙田服务器,L5630*2/16G内存/120G SSD硬盘/5M CN2线路

DiyVM是一家成立于2009年的国人主机商,提供的产品包括VPS主机、独立服务器租用等,产品数据中心包括中国香港、日本大阪和美国洛杉矶等,其中VPS主机基于XEN架构,支持异地备份与自定义镜像,VPS和独立服务器均可提供内网IP功能。商家VPS主机均2GB内存起步,三个地区机房可选,使用优惠码后每月69元起;独立服务器开设在香港沙田电信机房,CN2线路,自动化开通上架,最低499元/月起。下面以...

易探云(QQ音乐绿钻)北京/深圳云服务器8核8G10M带宽低至1332.07元/年起

易探云怎么样?易探云香港云服务器比较有优势,他家香港BGP+CN2口碑不错,速度也很稳定。尤其是今年他们动作很大,推出的香港云服务器有4个可用区价格低至18元起,试用过一个月的用户基本会续费,如果年付的话还可以享受8.5折或秒杀价格。今天,云服务器网(yuntue.com)小编推荐一下易探云国内云服务器优惠活动,北京和深圳这二个机房的云服务器2核2G5M带宽低至330.66元/年,还有高配云服务器...

php套件为你推荐
木马病毒木马和病毒有什么区别万维读者网《读者》要订购有网站吗?打开网页出现错误网页出现错误怎么解决?要最简单的那种百度抢票浏览器猎豹浏览器,360抢票,百度卫士抢票哪个抢票工具好?渗透测试软件测试与渗透测试那个工作有前途二叉树遍历写出二叉树的先序遍历、中序遍历、后序遍历。godaddyGO DADDY服务器空间域名怎么样qq怎么发邮件手机QQ怎么发邮件lockdowndiphone4s 完美越狱5.1.1时出现Could not connect to lockdownd。求救啊!!商标注册查询官网商标注册网的官网是哪个?
广州服务器租用 香港vps主机 景安vps 域名主机管理系统 site5 googleapps ssh帐号 远程登陆工具 河南m值兑换 域名转接 百度云1t 流媒体加速 无限流量 江苏双线 睿云 七十九刀 谷歌搜索打不开 重庆联通服务器托管 空间排行榜 godaddy退款 更多