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 相关文章推荐
一个好用的分页函数
Nov 16 PHP
php session应用实例 登录验证
Mar 16 PHP
调试一段PHP程序时遇到的三个问题
Jan 17 PHP
ThinkPHP中自定义目录结构的设置方法
Aug 15 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
PHP获取文件夹内文件数的方法
Mar 12 PHP
php中使用gd库实现远程图片下载实例
May 12 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
Sep 29 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
Oct 20 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
php桥接模式应用案例分析
Oct 23 PHP
PHP实现页面静态化深入讲解
Mar 04 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
2006/10/09 PHP
PHP与javascript的两种交互方式
2006/10/09 PHP
php获得文件扩展名三法
2006/11/25 PHP
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
PHP强制转化的形式整理
2020/05/22 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
JavaScript 指导方针
2007/04/05 Javascript
javascript动画效果类封装代码
2007/08/28 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
js面向对象设计用{}好还是function(){}好(构造函数)
2011/10/23 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
2013/07/05 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
python中利用matplotlib读取灰度图的例子
2019/12/07 Python
python 实现list或string按指定分段
2019/12/25 Python
python程序输出无内容的解决方式
2020/04/09 Python
详解Scrapy Redis入门实战
2020/11/18 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
恶意软件的定义
2014/11/12 面试题
先进集体获奖感言
2014/02/13 职场文书
初中生期末评语大全
2014/04/24 职场文书
2015年安全月活动总结
2015/03/26 职场文书
素质拓展训练感想
2015/08/07 职场文书