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

SoftShellWeb:台湾(台北)VPS年付49美元起,荷兰VPS年付24美元起

SoftShellWeb是一家2019年成立的国外主机商,商家在英格兰注册,提供的产品包括虚拟主机和VPS,其中VPS基于KVM架构,采用SSD硬盘,提供IPv4+IPv6,可选美国(圣何塞)、荷兰(阿姆斯特丹)和台湾(台北)等机房。商家近期推出台湾和荷兰年付特价VPS主机,其中台湾VPS最低年付49美元,荷兰VPS年付24美元起。台湾VPSCPU:1core内存:2GB硬盘:20GB SSD流量...

LOCVPS洛杉矶CN2线路KVM上线,洛杉矶/香港云地/香港邦联7折

LOCVPS发来了新的洛杉矶CN2线路主机上线通知,基于KVM架构,目前可与香港云地、香港邦联机房XEN架构主机一起适用7折优惠码,优惠后最低美国洛杉矶CN2线路KVM架构2GB内存套餐月付38.5元起。LOCPVS是一家成立较早的国人VPS服务商,目前提供洛杉矶MC、洛杉矶C3、和香港邦联、香港沙田电信、香港大埔、日本东京、日本大阪、新加坡、德国和荷兰等机房VPS主机,基于KVM或者XEN架构。...

raksmart:全新cloud云服务器系列测评,告诉你raksmart新产品效果好不好

2021年6月底,raksmart开发出来的新产品“cloud-云服务器”正式上线对外售卖,当前只有美国硅谷机房(或许以后会有其他数据中心加入)可供选择。或许你会问raksmart云服务器怎么样啊、raksm云服务器好不好、网络速度快不好之类的废话(不实测的话),本着主机测评趟雷、大家受益的原则,先开一个给大家测评一下!官方网站:https://www.raksmart.com云服务器的说明:底层...

php套件为你推荐
优酷路由宝怎么赚钱优酷路由宝是如何赚钱的?站长故事部队里什么是站长?最低是什么级别?都有哪些级别啊?支付宝查询余额怎么查询支付宝里的余额1433端口如何打开SQL1433端口网站运营网络运营具体做什么呢显卡温度多少正常电脑显卡温度多少正常?中小企业信息化信息化为中小企业发展带来了哪些机遇滚动代码来回滚动代码蘑菇街美丽说蘑菇街、美丽说这类网站前期是怎么推广的?硬盘人硬盘是指什么人
紧急升级请记住新域名 便宜vps vps论坛 linuxvps lamp安装 vultr美国与日本 国外私服 免费ftp空间 info域名 淘宝双十一2018 html空间 777te 元旦促销 促正网秒杀 php空间购买 cloudlink 韩国代理ip 畅行云 cdn网站加速 免费蓝钻 更多