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

HostKvm 黑色星期五香港服务器终身六折 其余机房八折

HostKvm商家我们也不用多介绍,这个服务商来自国内某商家,旗下也有多个品牌的,每次看到推送信息都是几个服务商品牌一起推送的。当然商家还是比较稳定的,商家品牌比较多,这也是国内商家一贯的做法,这样广撒网。这次看到黑五优惠活动发布了,针对其主打的香港云服务器提供终身6折的优惠,其余机房服务器依然是8折,另还有充值50美元赠送5美元的优惠活动,有需要的可以看看。HostKvm是一个创建于2013年的...

Central美国65折优惠,美国达拉斯机房VPS季付赠送双倍内存

Central美国独立日活动正在进行中,旗下美国达拉斯机房VPS 65折优惠,季付赠送双倍内存(需要发工单),Central租用的Hivelocity的机房,只支持信用卡和加密货币付款,不支持paypal,需要美国独服的可以谨慎入手试试。Central怎么样?Central便宜服务器,Central自称成立于2019年,主营美国达拉斯机房Linux vps、Windows vps、专用服务器和托管...

华为云(69元)828促销活动 2G1M云服务器

华为云818上云活动活动截止到8月31日。1、秒杀限时区优惠仅限一单!云服务器秒杀价低至0.59折,每日9点开抢秒杀抢购活动仅限早上9点开始,有限量库存的。2G1M云服务器低至首年69元。2、新用户折扣区优惠仅限一单!购云服务器享3折起加购主机安全及数据库。企业和个人的优惠力度和方案是不同的。比如还有.CN域名首年8元。华为云服务器CPU资源正常没有扣量。3、抽奖活动在8.4-8.31日期间注册并...

php套件为你推荐
主页改不了浏览器主页改不了 怎么办啊绵阳电信绵阳电信宽带套餐…具体点手游运营手册游戏策划新手应该看那些书籍?iphone5解锁苹果5手机怎么解屏幕锁flash导航条谁来帮我看看这样的flash导航条 下面的页面该怎么设计伪静态什么是伪静态网站运营刚创业的网站运营怎么做?ps抠图技巧ps的抠图技巧是什么网易公开课怎么下载网易公开课的视频该如何下载?开机滚动条电脑开机启动滚动条时间长怎么办?
已备案域名注册 如何查询ip地址 台湾服务器 分销主机 bluehost webhostingpad mach5 wordpress技巧 空间打开慢 有益网络 howfile 刀片式服务器 服务器托管什么意思 umax120 linux使用教程 闪讯官网 google台湾 丽萨 游戏服务器出租 谷歌台湾 更多