Drupal读取Excel并导入到mysql数据库程序代码_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Drupal读取Excel并导入到mysql数据库程序代码_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4249字,纯文字阅读大概需要7分钟。
内容图文
![Drupal读取Excel并导入到mysql数据库程序代码_PHP教程](/upload/InfoBanner/zyjiaocheng/179/a2896793fdf04a9ebb910ce6be623325.jpg)
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最后提交上传文件后的函数:
代码如下 | |
function excel_upload_form_submit($form, &$form_state) { set_time_limit(0); $timestamp = time(); // 确保Excel文件上传了 if ($file = file_save_upload(‘file’)) { $row = 0; //解析行数 $paseRows = 0; //跳过行数 没有值的行 $insertRows = 0; //插入行数 $table = array( ‘dbfield1′, ‘dbfield2′, ‘dbfield3, ‘dbfield4′, ‘dbfield5′, … ‘dbfieldn’, ); require("sites/all/libraries/PHPExcel/PHPExcel/IOFactory.php"); if(($handle = fopen ( $file->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 = ”; 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 == ‘A’ && !intval($cell)) { $paseRows++; break; } $field[] = $table[$i]; $token_db[] = "’%s’"; $row_db[] = $cell; $query .= $table[$i]." = ‘%s’, "; $i++; } $row++; if ($row_db) { db_query(‘INSERT INTO {db_import} (‘. implode(‘, ‘, $field) .’, created) VALUES(‘. implode(‘, ‘, $token_db) .’, %d)’, array_merge($row_db, array($timestamp))); $insertRows++; } } fclose ( $handle ); } drupal_set_message(t(‘文件 @file 导入成功.’, array(‘@file’ => $file->filename))); drupal_set_message("解析".$row."条数据完毕,新增共".$insertRows."条数据,没有试题类型ID的".$paseRows."条数据。"); } else { drupal_set_message(t(‘File to import not found.’), ‘error’); $form_state['redirect'] = ‘admin/content/db/import’; return; } } ?> |
上面代码部分注意一下几点:
代码如下 | |
|
获取的列为英文大写字母的数组索引。
代码如下 | |
$col = PHPExcel_Cell::columnIndexFromString($currentSheet->getHighestColumn()); |
将英文大写字母索引格式化为数字,索引值从0开始计算。
本代码支持读取Excel 2007 及之前的格式。
http://www.bkjia.com/PHPjc/630716.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/630716.htmlTechArticle本文章来给大家介绍关于如何在Drupal读取Excel并导入到mysql数据库的方法,这里我们介绍使用excel插件PHPExcel,PHPExcel 是用来操作Office Excel 文档...
内容总结
以上是互联网集市为您收集整理的Drupal读取Excel并导入到mysql数据库程序代码_PHP教程全部内容,希望文章能够帮你解决Drupal读取Excel并导入到mysql数据库程序代码_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。