热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Drupal读取Excel并导入到mysql数据库程序代码

本文章来给大家介绍关于如何在Drupal读取Excel并导入到mysql数据库的方法,这里我们介绍使用excel插件PHPExcel,PHPExcel是用来操作OfficeExcel文档的...
本文章来给大家介绍关于如何在Drupal读取Excel并导入到mysql数据库的方法,这里我们介绍使用excel插件PHPExcel,PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言,可以使用它来读取、写入不同格式的电子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等

Drupal 通过Library 调用 PHPExcl

将PHPExcel 下载后,上传到Drupal目录:sites/all/libraries/PHPExcel

如果你的项目中安装了libraries模块,可以通过libraries_load($name);来调用,如果没有安装libraries模块,可以简单的使用下列代码来调用,代码如下:

require("sites/all/libraries/PHPExcel/PHPExcel/IOFactory.php");

注意为了确保Excel全部导入,程序可以会话很长的时间来进行,所以在代码开头部分加入如下代码:

set_time_limit(0);

来确保运行时间不受限制.

Drupal 读取Excel并导入到数据库

Drupal 实现上传Excel文件后,读取Excel 内容,写入到数据库,打印导入结果消息.

归纳起来有这样几点:

Drupal 读取Excel 多行多列内容,列数从1到n,行数也是1到n.

Drupal 根据数据库结构 n 个字段分别用于存放Excel 1到n列,如果Excel 的列数很多,可以把n列值存放在1个字段中,这里我解决的是Excel n列值存放到MySQL n个字段中(n不是很大),这就是在Drupal最后提交上传文件后的函数:

filepath, "r" )) !== FALSE) {  
          $PHPExcel = new PHPExcel ();  
          $PHPReader = new PHPExcel_Reader_Excel2007 ();  
          if (! $PHPReader->canRead ( $file->filepath )) {  
            $PHPReader = new PHPExcel_Reader_Excel5 ();  
            if (! $PHPReader->canRead ( $file->filepath )) {  
              echo 'no Excel';  
              return;  
            }  
          }  
          $PHPExcel = $PHPReader->load ( $file->filepath );  
          $currentSheet = $PHPExcel->getSheet ( 0 );  
          /**取得一共有多少列*/  
          $allColumn = $currentSheet->getHighestColumn();  
          //取得共有多少列,若不使用此静态方法,获得的$col是文件列的最大的英文大写字母  
          $col = PHPExcel_Cell::columnIndexFromString($currentSheet->getHighestColumn());  
          /**取得一共有多少行*/  
          $allRow = $currentSheet->getHighestRow();  
          //循环读取每个单元格的内容。注意行从1开始,列从A开始  
          for($rowIndex = 2; $rowIndex <= $allRow; $rowIndex++) {  
            $token_db = $row_db = $field = array();  
            $i = 0;  
            $query = &#39;&#39;;  
            for($colIndex = 0; $colIndex <= $col; $colIndex++) {  
              //$addr = $colIndex.$rowIndex;  
              //$cell = $currentSheet->getCell($addr)->getValue();  
              $cell = $currentSheet->getCellByColumnAndRow($colIndex, $rowIndex)->getValue();  
              $cell = trim($cell);  
              if($cell instanceof PHPExcel_RichText) {  
                //富文本转换字符串  
                $cell = $cell->__toString();  
              }  
              if ($colIndex == &#39;A&#39; && !intval($cell)) {  
                $paseRows++;  
                break;  
              }  
              $field[] = $table[$i];  
              $token_db[] = "&#39;%s&#39;";  
              $row_db[] = $cell;  
              $query .= $table[$i]." = &#39;%s&#39;, ";  
              $i++;  
            }  
            $row++;  
            if ($row_db) {  
              db_query(&#39;INSERT INTO {db_import} (&#39;. implode(&#39;, &#39;, $field) .&#39;, created) VALUES(&#39;. implode(&#39;, &#39;, $token_db) .&#39;, %d)&#39;, array_merge($row_db, array($timestamp)));  
              $insertRows++;  
            }  
          }  
          fclose ( $handle );  
        }  
        drupal_set_message(t(&#39;文件 @file 导入成功.&#39;, array(&#39;@file&#39; => $file->filename)));  
        drupal_set_message("解析".$row."条数据完毕,新增共".$insertRows."条数据,没有试题类型ID的".$paseRows."条数据。");  
      }
      else {  
        drupal_set_message(t(&#39;File to import not found.&#39;), &#39;error&#39;);  
        $form_state[&#39;redirect&#39;] = &#39;admin/content/db/import&#39;;  
        return;  
      }  
    } 
?>

上面代码部分注意一下几点,代码如下:

$allColumn = $currentSheet->getHighestColumn();

获取的列为英文大写字母的数组索引,代码如下:

$col = PHPExcel_Cell::columnIndexFromString($currentSheet->getHighestColumn());

将英文大写字母索引格式化为数字,索引值从0开始计算,本代码支持读取Excel 2007 及之前的格式.


教程链接:

随意转载~但请保留教程地址★

推荐阅读
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 数据库(外键及其约束理解)(https:www.cnblogs.comchenxiaoheip6909318.html)My ... [详细]
  • yum安装_Redis —yum安装全过程
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Redis—yum安装全过程相关的知识,希望对你有一定的参考价值。访问https://redi ... [详细]
author-avatar
丨丶皓月_261
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有