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 相关文章推荐
图书管理程序(三)
Oct 09 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
PHP数组交集的优化代码分析
Mar 06 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
Jul 04 PHP
laravel 4安装及入门图文教程
Oct 29 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
php将图片保存入mysql数据库失败的解决方法
Dec 27 PHP
php实现以只读方式打开文件的方法
Mar 16 PHP
php格式化时间戳
Dec 17 PHP
php生成图片缩略图功能示例
Feb 22 PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 PHP
分享5个非常有用的Laravel Blade指令
May 30 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
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
php给数组赋值的实例方法
2019/09/26 PHP
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
python实现关键词提取的示例讲解
2018/04/28 Python
关于python写入文件自动换行的问题
2018/06/23 Python
python版百度语音识别功能
2019/07/09 Python
Python list运算操作代码实例解析
2020/01/20 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
SmartBuyGlasses丹麦:网上购买名牌太阳镜、眼镜和隐形眼镜
2016/10/01 全球购物
初中教师业务学习材料
2014/05/12 职场文书
质量负责人任命书
2014/06/06 职场文书
安全标兵事迹材料
2014/08/17 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
人事聘任通知
2015/04/21 职场文书
2015年治庸问责工作总结
2015/07/27 职场文书
python实现简单反弹球游戏
2021/04/12 Python
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS
MySQL 计算连续登录天数
2022/05/11 MySQL