PHPExcel读取excel并导入数据库
例1
代码示例
代码如下 | 复制代码 |
require_once 'phpexcel/Classes/PHPExcel.php'; //循环读取excel文件,读取一条,插入一条 $a = $objPHPExcel->getActiveSheet()->getCell("A".$j)->getValue();//获取A列的值 } |
例2
代码如下 | 复制代码 |
<?php |
例3
新建数据库表如下:
代码如下 | 复制代码 |
-- 数据库: `alumni` -- 表的结构 `alumni` CREATE TABLE IF NOT EXISTS `alumni` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `gid` varchar(20) DEFAULT NULL COMMENT '档案编号', `student_no` varchar(20) DEFAULT NULL COMMENT '学号', `name` varchar(32) DEFAULT NULL, PRIMARY KEY (`id`), KEY `gid` (`gid`), KEY `name` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
php程序
代码如下 | 复制代码 |
|
代码如下 | 复制代码 |
<?php /* author:凹凸曼(lyc) /* email: jar-c@163.com /* 内存缓存管理 */ class Yc_Memcache{ private $memcache=null; public function __construct(){ } /** * 连接数据库 * * @param mixed $host * @param mixed $port * @param mixed $timeout */ public function connect($host,$port=11211,$timeout=1){ if(!function_exists(memcache_connect)){ return FALSE;} $this->memcache=@memcache_connect($host,$port,$timeout); if(empty($this->memcache)){ return FALSE; }else{ return TRUE; } } /** * 存放值 * * @param mixed $key * @param mixed $var * @param mixed $flag 默认为0不压缩 压缩状态填写:MEMCACHE_COMPRESSED * @param mixed $expire 默认缓存时间(单位秒) */ public function set($key,$var,$flag=0,$expire=10){ $f=@memcache_set($this->memcache,$key,$var,$flag,$expire); if(empty($f)){ return FALSE; }else{ return TRUE; } } /** * 取出对应的key的value * * @param mixed $key * @param mixed $flags * $flags 如果此值为1表示经过序列化, * 但未经过压缩,2表明压缩而未序列化, * 3表明压缩并且序列化,0表明未经过压缩和序列化 */ public function get($key,$flags=0){ $val=@memcache_get($this->memcache,$key,$flags); return $val; } /** * 删除缓存的key * * @param mixed $key * @param mixed $timeout */ public function delete($key,$timeout=1){ $flag=@memcache_delete($this->memcache,$key,$timeout); return $flag; } /** * 刷新缓存但不释放内存空间 * */ public function flush(){ memcache_flush($this->memcache); } /** * 关闭内存连接 * */ public function close(){ memcache_close($this->memcache); } /** * 替换对应key的value * * @param mixed $key * @param mixed $var * @param mixed $flag * @param mixed $expire */ public function replace($key,$var,$flag=0,$expire=1){ $f=memcache_replace($this->memcache,$key,$var,$flag,$expire); return $f; } /** * 开启大值自动压缩 * * @param mixed $threshold 单位b * @param mixed $min_saveings 默认值是0.2表示20%压缩率 */ public function setCompressThreshold($threshold,$min_saveings=0.2){ $f=@memcache_set_compress_threshold($this->memcache,$threshold,$min_saveings); return $f; } /** * 用于获取一个服务器的在线/离线状态 * * @param mixed $host * @param mixed $port */ public function getServerStatus($host,$port=11211){ $re=memcache_get_server_status($this->memcache,$host,$port); return $re; } /** * 缓存服务器池中所有服务器统计信息 * * @param mixed $type 期望抓取的统计信息类型,可以使用的值有{reset, malloc, maps, cachedump, slabs, items, sizes} * @param mixed $slabid cachedump命令会完全占用服务器通常用于 比较严格的调 * @param mixed $limit 从服务端获取的实体条数 */ public function getExtendedStats($type='',$slabid=0,$limit=100){ $re=memcache_get_extended_stats($this->memcache,$type,$slabid,$limit); return $re; } } /***********测试区域********************/ $mem=new Yc_Memcache(); $f=$mem->connect('125.64.41.138',12000); var_dump($f); if($f){ // $mem->setCompressThreshold(2000,0.2); $mem->set('key','hello',0,30); // var_dump($mem->delete('key1')); // $mem->flush(); // var_dump($mem->replace('hao','d')); // echo $mem->get('key'); echo $mem->getServerStatus('127.0.0.1',12000); echo $mem->get('key'); echo '<pre>'; print_r($mem->getExtendedStats()); } ?> |
phpExcel将读取的单元格信息保存在内存中,我们可以通过
代码如下 | 复制代码 |
PHPExcel_Settings::setCacheStorageMethod() |
来设置不同的缓存方式,已达到降低内存消耗的目的!
1、将单元格数据序列化后保存在内存中
代码如下 | 复制代码 |
PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized; |
2、将单元格序列化后再进行Gzip压缩,然后保存在内存中
代码如下 | 复制代码 |
PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip; |
3、缓存在临时的磁盘文件中,速度可能会慢一些
代码如下 | 复制代码 |
PHPExcel_CachedObjectStorageFactory::cache_to_discISAM; |
4、保存在php://temp
代码如下 | 复制代码 |
PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp; |
5、保存在memcache中
PHPExcel_CachedObjectStorageFactory::cache_to_memcache
举例:
第4中方式:
代码如下 | 复制代码 |
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp; |
第5种:
代码如下 | 复制代码 |
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_memcache; |
其它的方法
第一个方法,你可以考虑生成多个sheet的方式,不需要生成多个excel文件,根据你数据总量计算每个sheet导出多少行, 下面是PHPExcel生成多个sheet方法:
面是PHPExcel生成多个sheet方法:
代码如下 | 复制代码 |
$sheet = $objPHPExcel->getActiveSheet(); $sheet->setCellValue('A1',$x); $sheet->setCellValue('B1',$y); |
第二个方法,你可以考虑ajax来分批导出,不用每次刷新页面。
代码如下 | 复制代码 |
<a href="#" id="export">export to Excel</a> $('#export').click(function() { $.ajax({ url: "export.php", data: getData(), //这个地方你也可以在php里获取,一般读数据库 success: function(response){ window.location.href = response.url; } })
}); |
代码如下 | 复制代码 |
//export.php $data = $_POST['data']; $xls = new PHPExcel(); $xls->loadData($formattedData); $xls->exportToFile('excel.xls'); $response = array( 'success' => true, 'url' => $url );
echo json_encode($response); ?> |
数据量很大的话,建议采用第二种方法,ajax来导出数据,上面方法简单给了个流程,具体你自己补充!
php中提供了直接与mssql数据库连接的命令,就像是与mysql连接一样,下面我来介绍。下面是odbc建立连接代码。
代码如下 | 复制代码 |
$con = odbc_connect('odbc名称','用户名','密码'); |
2、连接mssql2000
代码如下 | 复制代码 |
$con = mssql_connect('数据库地址','用户名','密码'); |
3、连接mssql2008
代码如下 | 复制代码 |
$connectionInfo = array("UID"=>用户名,"PWD"=>密码,"Database"=>"数据库名称"); |
上面方法很简单我就不介绍了,只讲述如果连接不成功我们可做如下设置(php.ini文件
中;extension=php_pdo_mssql.dll ;extension=php_pdo_odbc.dll 前面的分号去掉)
使用php程序的朋友都知道php与mysql非常不错的一对了,我们常常用它来做WEB开发,下面我来介绍最简单的php连接mysql数据库并写入数据,有需要的朋友可参考。原理步骤
1,php利用mysql_connect与mysql数据库连接
2,打开MySQL数据库
3,接受页面数据,PHP录入到指定的表中
4、然后利用mysql_query把sql执行并保存到数据库中。
连接mysql数据库超级简单如下
代码如下 | 复制代码 |
<?php mysql_connect("localhost","root","");//连接MySQL mysql_select_db("hello");//选择数据库 ?> |
例1
代码如下 | 复制代码 |
<?php $uname = $_GET['n'];//GET方法为URL参数传递 $sql = "insert into members(username,password) values ('$uname','$psw')"; mysql_close();//关闭MySQL连接 |
结合了更简单的
代码如下 | 复制代码 |
<? |
相关文章
- 操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
- 本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
- 这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
- 这篇文章主要介绍了Intellij IDEA连接Navicat数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借价值,需要的朋友可以参考下...2021-03-25
- 在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
- C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
- 通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。 但是ping mysql所在服务器却很快! 想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果...2015-10-21
- 某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
- mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
- 1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
- 这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
- yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2使用中的一些基本的增删改查操作。 User::find()->all(); //返回所有用户数据; User::findOne($id); //返回 主键...2015-11-24
- 这篇文章主要介绍了springBoot 项目排除数据库启动方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-10
- 1.用phpmyadmin创建数据库和数据表 创建数据库的时候,请将“整理”设置为:“utf8_general_ci” 或执行语句: 复制代码 代码如下:CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 创...2015-10-21
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
这篇文章主要介绍了在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11- 这篇文章主要介绍了Linux 下使用shell脚本定时维护数据库,本文通过案例分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
- “主机,用户名,密码”得到连接、“数据库,sql,连接”得到结果,最后是结果的处理显示。当然,数据库连接是扩展库为我们完成的,我们能做的仅仅是处理结果而已。...2013-09-29
- 对数据加密分两种,一种是对数据库本身进行加密,另一种是对数据表中的数据进行加密,下面通过本文给大家介绍C#连接加密的Sqlite数据库的方法,感兴趣的朋友一起看看吧...2020-06-25
- 这篇文章主要介绍了Java连接数据库oracle中文乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-16
- 本篇文章是对C#连接Oracle数据库的连接字符串进行了详细的分析介绍,需要的朋友参考下...2020-06-25