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 相关文章推荐
php5 non-thread-safe和thread-safe这两个版本的区别分析
Mar 13 PHP
php-cli简介(不会Shell语言一样用Shell)
Jun 03 PHP
深入解析Session是否必须依赖Cookie
Aug 02 PHP
php setcookie函数的参数说明及其用法
Apr 20 PHP
destoon实现VIP排名一直在前面排序的方法
Aug 21 PHP
joomla数据库操作示例代码
Jan 06 PHP
WordPress中的shortcode短代码功能使用详解
May 17 PHP
Yii2实现ActiveForm ajax提交
May 26 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
Aug 23 PHP
PHP实现文件上传后台处理脚本
Mar 04 PHP
php + ajax 实现的写入数据库操作简单示例
May 16 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
自己做矿石收音机
2021/03/02 无线电
基于mysql的bbs设计(三)
2006/10/09 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
取选中的radio的值
2010/01/11 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
0基础学习前端开发的一些建议
2020/07/14 Javascript
Python发展史及网络爬虫
2019/06/19 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
Python集合操作方法详解
2020/02/09 Python
利用python实现逐步回归
2020/02/24 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
一道SQL存储过程面试题
2016/10/07 面试题
自动化专业个人求职信范文
2013/11/29 职场文书
高校教师思想汇报
2014/01/11 职场文书
教师申诉制度
2014/01/29 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
单位委托书怎么写
2014/09/21 职场文书
老乡会致辞
2015/07/28 职场文书
入党转正申请书范文
2019/05/20 职场文书
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS