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

CloudCone:KVM月付1.99美元起,洛杉矶机房,支持PayPal/支付宝

CloudCone的[2021 Flash Sale]活动仍在继续,针对独立服务器、VPS或者Hosted email,其中VPS主机基于KVM架构,最低每月1.99美元,支持7天退款到账户,可使用PayPal或者支付宝付款,先充值后下单的方式。这是一家成立于2017年的国外VPS主机商,提供独立服务器租用和VPS主机,其中VPS基于KVM架构,多个不同系列,也经常提供一些促销套餐,数据中心在洛杉...

LayerStack$10.04/月(可选中国香港、日本、新加坡和洛杉矶)高性能AMD EPYC (霄龙)云服务器,

LayerStack(成立于2017年),当前正在9折促销旗下的云服务器,LayerStack的云服务器采用第 3 代 AMD EPYC™ (霄龙) 处理器,DDR4内存和企业级 PCIe Gen 4 NVMe SSD。数据中心可选中国香港、日本、新加坡和洛杉矶!其中中国香港、日本和新加坡分为国际线路和CN2线路,如果选择CN2线路,价格每月要+3.2美元,付款支持paypal,支付宝,信用卡等!...

星梦云:四川100G高防4H4G10M月付仅60元

星梦云怎么样?星梦云资质齐全,IDC/ISP均有,从星梦云这边租的服务器均可以备案,属于一手资源,高防机柜、大带宽、高防IP业务,一手整C IP段,四川电信,星梦云专注四川高防服务器,成都服务器,雅安服务器。星梦云目前夏日云服务器促销,四川100G高防4H4G10M月付仅60元;西南高防月付特价活动,续费同价,买到就是赚到!点击进入:星梦云官方网站地址1、成都电信年中活动机(成都电信优化线路,封锁...

php套件为你推荐
赵雨润《星辰变》电影什么时候能开机拍呢?二叉树遍历怎么正确理解二叉树的遍历直播加速有没有软件使已经下载好了的视频播放加速,例如30分钟的视频15分钟或者20分钟播放完创维云电视功能什么是创维云电视啊?创维云电视是什么意思?ejb开发什么是EJB?它是干什么的?和JAVA,JSP有关系吗?他们各有什么特点和用途?二层交换机集线器和二层交换机,三层交换机的区别云挂机快手极速版后台云挂机辅?助各位用了吗?在哪找的?网管工具网吧工具有什么?发邮件怎么发发邮件怎么发?网站地图制作如何制作一个网站地图?
北京租服务器 重庆vps租用 鲁诺vps 动态域名解析软件 hostigation lunarpages 老左博客 gomezpeer 美国仿牌空间 表格样式 debian6 本网站在美国维护 七夕促销 cdn加速原理 linux服务器维护 美国在线代理服务器 天翼云盘 如何注册阿里云邮箱 江苏双线服务器 创建邮箱 更多