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 相关文章推荐
在PHP3中实现SESSION的功能(二)
Oct 09 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
Nov 10 PHP
php实现cc攻击防御和防止快速刷新页面示例
Feb 13 PHP
PHP中redis的用法深入解析
Feb 20 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
Mar 11 PHP
PHP+MySQL删除操作实例
Jan 21 PHP
php计算两个整数的最大公约数常用算法小结
Mar 05 PHP
php将数组存储为文本文件方法汇总
Oct 28 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
PHP获取访问页面HTTP状态码的实现代码
Nov 03 PHP
laravel ORM 只开启created_at的几种方法总结
Jan 29 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设计模式 Mediator (中介者模式)
2011/06/26 PHP
PHP5 的对象赋值机制介绍
2011/08/02 PHP
PHP几个数学计算的内部函数学习整理
2011/08/06 PHP
第二章 PHP入门基础之php代码写法
2011/12/30 PHP
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
python list语法学习(带例子)
2013/11/01 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
python写入文件自动换行问题的方法
2019/07/05 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
高级销售员求职信
2013/10/25 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
实习介绍信模板
2015/01/30 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
小学体育课教学反思
2016/02/16 职场文书
《大禹治水》教学反思
2016/02/22 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
Nginx动静分离配置实现与说明
2022/04/07 Servers