ThinkPHP 框架实现的读取excel导入数据库操作示例


Posted in PHP onApril 14, 2020

本文实例讲述了ThinkPHP 框架实现的读取excel导入数据库操作。分享给大家供大家参考,具体如下:

入口文件中:

require_once VENDOR_PATH.'PHPExcel/PHPExcel/IOFactory.php';
require_once VENDOR_PATH.'PHPExcel/PHPExcel.php';

PHP:

namespace Home\Controller;
class ExcelController extends CommonController
{
public function Import() {
// vendor('PHPExcel.PHPExcel.IOFactory');
vendor("PHPExcel.PHPExcel.PHPExcel");
vendor("PHPExcel.PHPExcel.Writer.Excel5");
vendor("PHPExcel.PHPExcel.Writer.Excel2007");
//$excel = new PHPExcel();
$fileName = './trans_rate.xlsx';
date_default_timezone_set('PRC');
// 读取excel文件
try {
$objPHPExcel = \PHPExcel_IOFactory::load($fileName);
$inputFileType = \PHPExcel_IOFactory::identify($fileName);
$objReader = \PHPExcel_IOFactory::createReader($inputFileType);
// $objPHPExcel = $objReader->load($fileName);
// 确定要读取的sheet $sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
// 获取一行的数据
// $phone_str = '';
for ($row = 3; $row <= $highestRow; $row++) {
 $row_data = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
//获取excel表中一行的数组数据
//dump($row_data);
$row_data = $row_data[0];
$time = date('Y-m-d H:i:s', strtotime(trim($row_data[0])));
$start_province = trim($row_data[1]);
$start_city = trim($row_data[2]);
...
// $phone_str .= '"' . $phone . '",';
$where['phone'] = $phone;
$id_arr = M(数据表名)->where($where)->getField('id');
$user_id = !empty($id_arr) ? $id_arr : 0;
$fields[] = [
'数据表字段' => $user_id,//用户id
          ...
           ];
}
// dump($fields);
$rate_add = M(数据表名)->addAll($fields);
dump($rate_add);
echo M()->getLastSql();
if (!(0 < $rate_add)) {
CommonController::logProfile('添加excel数据,SQL:' . M()->getLastSql()); $this->endBack(0); }
// echo $phone_str . '<br />';
// dump($user_id);
} catch (Exception $e) {
die('加载文件发生错误:"' . pathinfo($fileName, PATHINFO_BASENAME) . '": ' . $e->getMessage()); } }}

php读取excel表数据:

<?php
include 'ThinkPHP/Library/Vendor/PHPExcel/PHPExcel/IOFactory.php';

$inputFileName = './trans_rate.xlsx';
date_default_timezone_set('PRC');
// 读取excel文件
try {
  $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
  $objReader = PHPExcel_IOFactory::createReader($inputFileType);
  $objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
  die('加载文件发生错误:"'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}

// 确定要读取的sheet
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();

// 获取一行的数据
for ($row = 1; $row <= $highestRow; $row++){
// Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
//这里得到的rowData都是一行的数据,得到数据后自行处理
var_dump($rowData);
echo "<br>";
}
//$data为从excel中获取到的数组
for ($i =0; $i<count($data);$i++){
  echo '<br>';
  $gettime= explode('-',$data[$i][0]);
  if (checkdate($month=$gettime[0],$day=$gettime[1],$year=$gettime[2])){
    echo gmdate('Y-m-d',gmmktime(0,0,0,$month,$day,$year));
  }else{
    echo ($data[$i][0]);
  }
  echo '-----------';
  echo $data[$i][1];
}
<?php
include 'ThinkPHP/Library/Vendor/PHPExcel/PHPExcel/IOFactory.php';

$inputFileName = './test.xlsx';
date_default_timezone_set('Asia/Shanghai');
// 读取excel文件
try {
  $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
  $objReader = PHPExcel_IOFactory::createReader($inputFileType);
  $objPHPExcel = $objReader->load($inputFileName);

  // 确定要读取的sheet,什么是sheet,看excel的右下角,真的不懂去百度吧
  $sheet = $objPHPExcel->getSheet(0);
  $highestRow = $sheet->getHighestRow();//最大行
  $highestColumn = $sheet->getHighestColumn();//最大列

  $data = array();
  for($rowIndex=2;$rowIndex<=$highestRow;$rowIndex++){    //循环读取每个单元格的内容。注意行从1开始,列从A开始
    for($colIndex='A';$colIndex<=$highestColumn;$colIndex++){
      $addr = $colIndex.$rowIndex;
      if($colIndex==="A"){ //指定H列为时间所在列
        $cell = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($addr)->getValue()));
//        $cell = PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($addr)->getValue());
//        var_dump($cell);die;
      }else{
        $cell = $sheet->getCell($addr)->getValue();
      }
//      if($cell instanceof PHPExcel_RichText){ //富文本转换字符串
//        $cell = $cell->__toString();
//      }
      $data[$rowIndex][$colIndex] = $cell;
    }
  }
//  return $data;
  var_dump($data);
} catch(Exception $e) {
  die('加载文件发生错误:"'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php学习之 认清变量的作用范围
Jan 26 PHP
收藏的PHP常用函数 推荐收藏保存
Feb 21 PHP
php echo 输出字符串函数详解
May 13 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
php跨站攻击实例分析
Oct 28 PHP
php操作xml入门之xml基本介绍及xml标签元素
Jan 23 PHP
php中实现可以返回多个值的函数实例
Mar 21 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
Mar 03 PHP
php 判断过去离现在几年的函数(实例代码)
Nov 15 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
Apr 13 #PHP
PHP 对象接口简单实现方法示例
Apr 13 #PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 #PHP
yii2.0框架多模型操作示例【添加/修改/删除】
Apr 13 #PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
Apr 13 #PHP
php回调函数处理数组操作示例
Apr 13 #PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 13 #PHP
You might like
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
PHP 缓存实现代码及详细注释
2010/05/16 PHP
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
解析php取整的几种方式
2013/06/25 PHP
PHP获取MAC地址的具体实例
2013/12/13 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
javascript中in运算符用法分析
2015/04/28 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
python批量生成本地ip地址的方法
2015/03/23 Python
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
Python切换pip安装源的方法详解
2016/11/18 Python
python 中字典嵌套列表的方法
2018/07/03 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
Win11 BitLocker 驱动器加密
2022/04/19 数码科技
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js