导出功能参考:http://www.cnblogs.com/zhouqi666/p/5978017.html

比较严重的问题:当遇到excel数据量比较大的时候,会发生内存溢出的情况,目前无法解决

excel的数据格式为

A     B

前面对应数据库type,后面对应电话号码

数据库

使用的是THINKPHP3.2.3其实就是连接数据库插入的时候用到和引用加载文件的时候用到TP只是了

代码如下

//引入PHPExcel 如果不是TP用require_once
vendor("PHPExcel.PHPExcel");
vendor("PHPExcel.IOFactory");
$cacheMethod = \PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
$cacheSettings = array( 'memoryCacheSize ' => '8MB');
\PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);

// 实例化exel对象
//文件路径
$file_path = './Public/excel/test1.xlsx';

if (!file_exists($file_path)){
    die('file not exists');
}
//文件的扩展名
$ext = strtolower(pathinfo($file_path,PATHINFO_EXTENSION));
if ($ext == 'xlsx'){
    $objReader = \PHPExcel_IOFactory::createReader('Excel2007');
    $objPHPExcel = $objReader->load($file_path);
}elseif($ext == 'xls'){
    $objReader = \PHPExcel_IOFactory::createReader('Excel5');
    $objPHPExcel = $objReader->load($file_path);
}
$objReader->setReadDataOnly(true);
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();//获取总行数
$highestColumn = $sheet->getHighestColumn();//获取总列数

//10  B
for ($i = 1;$i<=$highestRow;$i++){
    $record = array();//申明每条记录数组
    for ($j = 'A';$j<=$highestColumn;$j++){
        $record[] = $objPHPExcel->getActiveSheet()->getCell("$j$i")->getValue();//读取单元格
    }
    $record['type'] = $record[0];
    $record['phone'] = $record[1];
    $res = D('Test')->add($record);
    header("Content-type:text/html;charset=utf-8");
    if($res == false){
        echo '插入数据出错!数据格式为:';
        dump($record);
        die;
    }
}

使用PHPEXCEL导入数据到数据库的更多相关文章

  1. ThinkPHP第二十三天(Category表结构、PHPExcel导入数据函数)

    1.category分类表表结构id,name,pid,sort,结合category.class.php类使用. 2.PHPExcel导入数据函数示例 function excel_to_mysql ...

  2. PHP Excel文件导入数据到数据库

    1.php部分(本例thinkphp5.1): 下载PHPExcel了扩展http://phpexcel.codeplex.com/ <?phpnamespace app\admin\contr ...

  3. phpexcel导入数据提示失败

    phpexcel导入excel时明明只有几行数据,却提示506行失败,原来是excel中有506行"无效数据"(看起来是空的,但是和没有数据不一样).

  4. thinkphp中使用PHPEXCEL导入数据

    导入方法比较简单 但必须考虑到Excel本身单元格格式问题 例如以0开头的字符串读出来被去掉了前导0 成为float型而丢失一位 必须进行处理 <?php /** * Author lizhao ...

  5. ThinkPhp3.2.3 使用phpExcel导入数据

    public function uploadExcel(){ if (!empty($_FILES)){ $upload = new \Think\Upload(); // 实例化上传类 $uploa ...

  6. asp.net 从Excel表导入数据到数据库中

    http://www.cnblogs.com/hfzsjz/archive/2010/12/31/1922901.html http://hi.baidu.com/ctguyg/item/ebc857 ...

  7. phpexcel导入数据出现PHPExcel_RichText Object解决办法

    在导入excel的时候会出现异常情况,有的问题出现PHPExcel_RichText object,错误代码如下 PHPExcel_RichText Object ( [_richTextElemen ...

  8. phpexcel导入数据部分数据有误

    数据在excel中是这样的: 插入数据库后是这样的: 很难发现,出错的那几条数据中的单元格中都有英文','符号,而phpexcel又是以','来拼接读取到的数据的. 解决办法:修改代码中的','为不常 ...

  9. 从Excel表格导入数据到数据库

    数据库:SQL 1.小数据直接粘贴 2.用导入向导 3.用SSIS包 4.用SQL语句 现在详细说一下第4种方法,以.xlsx文件为例 .xlsx文件需要用provider“Microsoft.ACE ...

随机推荐

  1. 【Android】实验5 数独游戏界面设计-报告提交时间:2016.4.15

  2. 在Struts等框架中获取Spring容器的方式

    WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(ServletContext src); ...

  3. Offer 收割编程练习赛 87B 方圆距离

    与坐标轴平行的矩形和圆的位置关系. 分两种情况. 圆与矩形交集不为空 此时答案为零.问题归结为如何判断圆与矩形交集不为空. 先排除矩形顶点在圆内或圆心在矩形内. 此时,若矩形与圆交集不为空,则必有矩形 ...

  4. 威士忌(whiskey)

    威士忌(whiskey) 题目描述 Alan 喝了假威士忌,想问你一个问题: nvliu66 推荐大家读三本书<百年孤独>.<城市发展史>.<美国大城市的生与死>, ...

  5. NOIP2017赛前模拟11月6日—7日总结

    收获颇丰的两天··· 题目1:序列操作 给定n个非负整数,进行m次操作,每次操作给出c,要求找出c个正整数数并将它们减去1,问最多能进行多少操作?n,m<=1000000 首先暴力贪心肯定是每次 ...

  6. 微信2种access_token对比

    1.需求 了解网页accesstoken和基础accesstoken的不同 参考资料:http://www.cnblogs.com/wellsoho/p/5089409.html

  7. 转:Java NIO

    Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.本系列教程将有助于你学习和理解Java NIO.感谢并发编程网的翻译和投递 ...

  8. 消耗战(bzoj 2286)

    Description 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军 ...

  9. 学习C++ -> 向量(vector)

    一.向量的介绍 向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器. 与string相同, vector 同属于STL(Standard Template Lib ...

  10. knockout 表单绑定 要怎么Mapping才好

    问题 之前有了解过knockout,学习过绑定语法,结合帮助文档,做个Demo倒也不成问题,但是部分地方很不爽,不知道是我的用法不对,还是功力不够. 比如说,标签里定义的data-bind属性名,必须 ...