PHP Excel类读取excel文件并且导入数据库

本代码是在thinkphp中开始使用的

1.引入类

 代码如下 复制代码

Vendor('PHPExcel.PHPExcel');//引入扩展类.就是/
        Vendor('PHPExcel.PHPExcel.IOFactory');
        Vendor('PHPExcel.PHPExcel.Reader.Excel5');

 

$excel_file= ROOT_PATH."/public/Uploads/".$publicity_bankdata_mod->where("id=".$data['id'])->getField('excel_file');
        //dump($excel_file);exit;
$objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format
$objPHPExcel = $objReader->load($excel_file);//$uploadfile
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
$arr_result = array();
$strs=array();
$strs_datas=array();
$succ_result=0;
$error_result=0;

上面看上去有点乱,下面我来写一个完整的类

 

 代码如下 复制代码
<?php
set_time_limit(20000);
ini_set('memory_limit','-1');
require_once './PHPExcel.php';
require_once './PHPExcel/IOFactory.php';
require_once './PHPExcel/Reader/Excel5.php';
 
//使用pdo连接数据库
$dsn = "mysql:host=localhost;dbname=alumni;";
$user = "root";
$password = "";
try{
 $dbh = new PDO($dsn,$user,$password);
 $dbh->query('set names utf8;');
}catch(PDOException $e){
 echo "连接失败".$e->getMessage();
}
//pdo绑定参数操作
$stmt = $dbh->prepare("insert into alumni(gid,student_no,name) values (:gid,:student_no,:name) ");
$stmt->bindParam(":gid", $gid,PDO::PARAM_STR);
$stmt->bindParam(":student_no", $student_no,PDO::PARAM_STR);
$stmt->bindParam(":name", $name,PDO::PARAM_STR);
 
$objReader = new PHPExcel_Reader_Excel5(); //use excel2007
$objPHPExcel = $objReader->load('bks.xls'); //指定的文件
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
 
for($j=1;$j<=10;$j++)
{
 
$student_no = $objPHPExcel->getActiveSheet()->getCell("A".$j)->getValue();//第一列学号
$name = $objPHPExcel->getActiveSheet()->getCell("B".$j)->getValue();//第二列姓名
$gid = $objPHPExcel->getActiveSheet()->getCell("C".$j)->getValue();//第三列gid
}
//将获取的excel内容插入到数据库
$stmt->execute();
?>

php-excel-reader操作excel中的两个重要的方法:

1.dump(),它可以将excel内容以html格式输出:

echo $data->dump(true,true);

2.将excel数据存入数组中,使用$data->sheets,打印下如下:

 代码如下 复制代码

 

Array
(
[0] => Array
(
[maxrow] => 0
[maxcol] => 0
[numRows] => 5
[numCols] => 4
[cells] => Array
(
[1] => Array
(
[1] => 编号
[2] => 姓名
[3] => 年龄
[4] => 学号
)
[2] => Array
(
[1] => 1
[2] => 小红
[3] => 22
[4] => a1000
)
[3] => Array
(
[1] => 2
[2] => 小王
[3] => 33
[4] => a1001
)
[4] => Array
(
[1] => 3
[2] => 小黑
[3] => 44
[4] => a1002
)
[5] => Array
(
[2] => by
[3] => www.phpddt.com
)
)
[cellsInfo] => Array
(
[1] => Array
(
[1] => Array
(
[xfIndex] => 15
)
[2] => Array
(
[xfIndex] => 15
)
[3] => Array
(
[xfIndex] => 15
)
[4] => Array
(
[xfIndex] => 15
)
)
[2] => Array
(
[1] => Array
(
[string] => 1
[raw] => 1
[rectype] => unknown
[format] => %s
[formatIndex] => 0
[fontIndex] => 0
[formatColor] =>
[xfIndex] => 15
)
[2] => Array
(
[xfIndex] => 15
)
[3] => Array
(
[string] => 22
[raw] => 22
[rectype] => unknown
[format] => %s
[formatIndex] => 0
[fontIndex] => 0
[formatColor] =>
[xfIndex] => 15
)
[4] => Array
(
[xfIndex] => 15
)
)
[3] => Array
(
[1] => Array
(
[string] => 2
[raw] => 2
[rectype] => unknown
[format] => %s
[formatIndex] => 0
[fontIndex] => 6
[formatColor] =>
[xfIndex] => 23
)
[2] => Array
(
[xfIndex] => 23
)
[3] => Array
(
[string] => 33
[raw] => 33
[rectype] => unknown
[format] => %s
[formatIndex] => 0
[fontIndex] => 6
[formatColor] =>
[xfIndex] => 23
)
[4] => Array
(
[xfIndex] => 23
)
)
[4] => Array
(
[1] => Array
(
[string] => 3
[raw] => 3
[rectype] => unknown
[format] => %s
[formatIndex] => 0
[fontIndex] => 0
[formatColor] =>
[xfIndex] => 15
)
[2] => Array
(
[xfIndex] => 15
)
[3] => Array
(
[string] => 44
[raw] => 44
[rectype] => unknown
[format] => %s
[formatIndex] => 0
[fontIndex] => 0
[formatColor] =>
[xfIndex] => 15
)
[4] => Array
(
[xfIndex] => 15
)
)
[5] => Array
(
[2] => Array
(
[xfIndex] => 15
)
[3] => Array
(
[xfIndex] => 24
[hyperlink] => Array
(
[flags] => 23
[desc] => www.111cn.net

[link] => http://www.phpddt.co
)
)
)
)
)
[1] => Array
(
[maxrow] => 0
[maxcol] => 0
[numRows] => 0
[numCols] => 0
)
[2] => Array
(
[maxrow] => 0
[maxcol] => 0
[numRows] => 0
[numCols] => 0
)
)

时间: 2024-08-11 21:37:09

PHP Excel类读取excel文件并且导入数据库的相关文章

php中使用DOM类读取XML文件的实现代码_php技巧

主要功能:php中使用DOM类读取XML文件 设计知识点: 1.XML节点循环读取 2.用iconv()函数实现编码转换,防止中文乱码 holiday.xml文件如下 复制代码 代码如下: <?xml version="1.0" encoding="UTF-8"?> <daysOff-overTime> <year> <yearName>2012</yearName> <holiday> <

sql-C# 按行读取txt文本内容导入数据库SQL(1)第二行数据就从第二列插入(2)索引超出了数组界限?

问题描述 C# 按行读取txt文本内容导入数据库SQL(1)第二行数据就从第二列插入(2)索引超出了数组界限? 都是按行读取txt内容,(因为有两行数据和其他的不一样)用正则分析出来,赋给一个字符串数组, 将一个字符串数组的每个值一次写入数据库行的对应列.一行读取完成. 可是却显示,索引超出了数组界限,数组个数和行对应的 .将读取出来的数据显示在textBox中是正确的, 但是奇怪的是也确实是导入进去了,数据库中表格有了数据 最终结果似乎对的,除了第二行第一列没有数据.谢谢,刚入手,第一个程序!

使用PHP Excel类读取和生成excel文件

 使用PHP来生成Excel的方法有很多,比如使用最简单的回车符,制表符来生成,或者直接使用html的table格式,但这些方式兼容性都有所欠缺.测试了一下PHPExce类,发现太l强大了,可以输出非常复杂的excel表格,另外说一下还可以读取Excel文件.闲话少说,放出简要代码: <?php require_once './Classes/PHPExcel.php';   $objExcel = new PHPExcel();   $objWriter = new PHPExcel_Writ

php excel reader读取excel内容存入数据库实现代码_php实例

上一篇文章介绍了php-excel-reader读取excel文件的方法,因为需要,将excel这样的数据: 新建数据库表如下: -- 数据库: `alumni` -- 表的结构 `alumni` CREATE TABLE IF NOT EXISTS `alumni` (   `id` bigint(20) NOT NULL AUTO_INCREMENT,   `gid` varchar(20) DEFAULT NULL COMMENT '档案编号',   `student_no` varcha

读取PE文件的导入表

在上一篇文章里,我使用一个 TreeList 控件,展示了 PE 文件的内容.在那里可充分了解PE的文件头的信息,但是对 section(备注:常见译文为节,段,块)的一些信息我们还没有涉及.比如全局变量等数据,代码,资源,导入表等信息都位于相应的 section 中,有些 section 通常具有特定的名字,例如资源通常位于 .rsrc,代码通常位于 .text,导入表通常位于 .idata 段,等等.文本讲述的是把一个PE文件的导入表打印出来.我注意到 MS 提供了一个比较有用的函数,Ima

android实现raw文件夹导入数据库代码_Android

有这样一道面试题: 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布?    答: 把这个文件放在/res/raw目录下即可.res\raw目录中的文件不会被压缩,这样可以直接提取该目录中的文件,会生成资源id. 那么如何把raw文件下面的数据库导入到安装的程序中的database目录下呢? 复制代码 代码如下:     public void imporDatabase() {     //存放数据库的目录     String dirPath="/data/da

android实现raw文件夹导入数据库代码

有这样一道面试题: 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布? 答: 把这个文件放在/res/raw目录下即可.res\raw目录中的文件不会被压缩,这样可以直接提取该目录中的文件,会生成资源id. 那么如何把raw文件下面的数据库导入到安装的程序中的database目录下呢? 复制代码 代码如下:    public void imporDatabase() {     //存放数据库的目录     String dirPath="/data/data/c

excel文件内容导入数据库的问题及解决

今天需要导一些数据,从excel导入到数据库中. 没有装现成的plsqldev,只能用sql*loader来弄了. 首先我把excel文件的内容转换成csv文件,以逗号分隔,在另存外excel文件的时候有那个选项. 然后我在目标库中创建了如下的表. create table sql_summary(sql_time varchar2(100),sql_id varchar2(100),cpu_time varchar2(100),disk_time varchar2(100),exec_time

java 通过 Properties类 读取ini文件 键—值对

  /* Properties  类  利用 System的getProerties返回系统属性 传递一个 System.out 这个类的用处是可以读取一个 ini配置文件的信息   键=值  具体用法看docs */ import java.util.* ; import java.io.* ;  //FileInputStream  在这个包中 class  PropTest {  public static void main(String []args)  {   /*Propertie