澳门新萄京Excel类读取excel文件并且导入数据库,
分类:www.澳门新萄京赌场

php开荒中明确会遇大校excel文件内容导入到数据库的须要,php-excel-reader是三个读取excel的类,可以很自在的接受它读取excel文件特别有益。

本代码是在thinkphp中开首应用的

借助PHP-ExcelReader这几个开源类,大家能够轻易地导入Excel文件数量,示例代码如下:

先是正是要下载它,下载地址http://sourceforge.net/projects/phpexcelreader/下载回来直接解压里面有三个Excel文件夹,这几个目录就是它职业的文书。其他的文本是出现说立陶宛共和国(Republic of Lithuania卡塔尔国语件。示例文件挂上是不可能一贯用的,供给校勘Execl目录下的reader.php,找到第31行的:
require_once ‘Spreadsheet/Excel/Reader/OLERead.php’;
将其修正为require_once ‘oleread.php’;
并将本目录下的oleread.inc文件改名称为oleread.php
由来更改完,再运维下测验文件就能够符合规律工作了,上边是自带的example.php的内容,照旧很简短的。入库的法子在此外二个演示文件中也许有。
PHP-ExcelReader的用法比较容易,上面四句代码是必得的:
require_once 'Excel/reader.php';$data = new Spreadsheet_Excel_Reader();$data->setOutputEncoding('CP1251');$data->read('jxlrwtest.xls');

上意气风发篇作品介绍了php-excel-reader读取excel文件的格局,因为急需,将excel那样的数目:

php-excel-reader下载地址://www.jb51.net/codes/67223.html

1.引入类

PHP-ExcelReader下载地址:

上述四句代码施行完后,excel文件就解析完结了。剖析的结果在数组$reader->sheets[0]中,包蕴maxrow、maxcol、numRows、numCols、cells、cellsInfo六项,当中有效的有numRows(行数卡塔 尔(阿拉伯语:قطر‎、numCols(列数卡塔尔国、cells(单元格内容卡塔尔国。要想获取excel文件的绘声绘色多少音信,遍历$reader->sheets[0][“cells”]数组就能够。该数组是形如
$reader->sheets[0][“cells”][<行索引>][<列索引>] = <单元格中的值>
的二维数组,行索引和列索引均从1发端计数。

新建数据库表如下:

本人下载的是php-excel-reader-2.21版本,使用的时候还遭逢多少个小难题,后边再细说,先奉上php实例:

 代码如下

例.导入Excel文件

//完整代码
<?php// Test CVSrequire_once 'Excel/reader.php';$data = new Spreadsheet_Excel_Reader();$data->setOutputEncoding('CP936');$data->read('aaa.xls');error_reporting(E_ALL ^ E_NOTICE);for ($i = 2; $i <= $data->sheets[0]['numRows']; $i ) { for ($j = 4; $j <= 11; $j ) { if($data->sheets[0]['cells'][$i][$j]==""){ echo $nuk="null"; } echo $data->sheets[0]['cells'][$i][$j].","; } echo "
";}?>

-- 数据库: `alumni`

本人使用的excel如下图:

Vendor('PHPExcel.PHPExcel');//引进扩张类.正是/
        Vendor('PHPExcel.PHPExcel.IOFactory');
        Vendor('PHPExcel.PHPExcel.Reader.Excel5');

 代码如下

急需验证的是:
1. Excel/reader.php文件中大器晚成度用require_once包涵了oleread.inc文件,所以在调用的时候无需加载oleread.inc。
2. 官方提供的excel文件jxlwtest.xls已经毁损,不能读取与剖判。
3. 原始Excel/reader.php文件的第31行(如下卡塔尔会形成错误:
require_once 'Spreadsheet/Excel/Reader/OLERead.php';
由来是Spreadsheet/Excel/Reader/OLERead.php文件不设有。其实这里所需的公文就是Excel/oleread.inc,把require_once后的公文名改成 ’oleread.inc’就可以。
**4. ** 原始Excel/reader.php文件的第261行会促成如下警示:
Deprecated: Assigning thereturn value of new by reference is deprecated
其原因是此行的 =& 符号已经在PHP 5.3中被裁撤。依照该符号在此边的职能,直接将其改为 = 即可。
5. PHP-ExcelReader不扶植Excel 二〇〇七文书档案的解析,也正是说扩大名叫xlsx的Excel文件不能接收本类库进行分析;它只针对扩张名称叫xls的Excel文件。
6. PHP-ExcelReader的安装编码方法基于iconv命 令,setOutputEncoding方法的参数就是内需设置的字符集的称谓。要使那个法子生效必要给本地的PHP意况设置iconv扩大;若本地PHP意况尚未iconv扩大,那么PHP-ExcelReader的编码方法默感觉Unicode。关于iconv命令可参见如下链接:
http://www.cnblogs.com/xuxm2007/archive/2010/11/09/1872379.html
**7. ** PHP-ExceReader在剖析整数的时候只怕会现身精度上的引用误差,如58剖判为57.5,原因不明。能做的便是深入分析完后检查下多少,然后四舍五入(如若有要求的话卡塔尔国。
**8. ** PHP-ExcelReader对于excel文件中的空白单元格,要么直接跳过不贮存到结果数组中,要么保存为0只怕””(空字符串卡塔尔。

-- 表的布局 `alumni`

php代码如下:复制代码 代码如下: setOutputEncoding; //读取Excel文件 $data->read; //$data->sheets[0]['numRows']为Excel行数 for ($i = 1; $i <= $data->sheets[0]['numRows']; $i ) { //$data->sheets[0]['numCols']为Excel列数 for ($j = 1; $j <= $data->sheets[0]['numCols']; $j ) { //呈现各类单元格内容 echo $data->sheets[0]['cells'][$i][$j].' '; } echo '
'; } ?> 读取结果截图如下

 

<?php
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('gbk');
$data->read('test.xls');
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i ) {
    for ($j = 1; $j <= $data->sheets[0]['numCols']; $j ) {
        echo """.$data->sheets[0]['cells'][$i][$j]."",";
    }
    echo "n";
}
?>

CREATE TABLE IF NOT EXISTS `alumni` (

再来讲说那个类的小标题:

$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;

例.phpexcel导到excel

`id` bigint NOT NULL AUTO_INCREMENT,

出现Deprecated: Function split() is deprecated in 。。。错误

上边看上去有一点点乱,上面笔者来写三个后生可畏体化的类

1.    test.php

`gid` varchar DEFAULT NULL COMMENT '档案编号',

解决:将excel_reader2.php源码中split改为explode,详细情况点击php中explode与split的界别介绍

 

 代码如下

`student_no` varchar DEFAULT NULL COMMENT '学号',

出现Deprecated: Assigning the return value of new by reference is deprecated in错误

 代码如下

require_once 'reader.php';

`name` varchar DEFAULT NULL,

解决:将excel_reader2.php源码中$this->_ole =& new OLERead()中 &去掉,因为php5.3中放弃了=& 符号直接用=引用

<?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();
?>

// ExcelFile($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();

PRIMARY KEY ,

乱码难点一下子就解决了:

php-excel-reader操作excel中的三个重大的情势:

// Set output Encoding.
$data->setOutputEncoding('gbk');

KEY `gid` ,

构造函数是function Spreadsheet_Excel_Reader($file='',$store_extended_info=true,$outputEncoding=''),它暗中同意的编码是utf-8,假设不钦命,恐怕会冒出乱码难点,可透过$data->setOutputEncoding;内定,还犹即使您利用dump函数将excel内容意气风发html格式输出,使用htmlentities将字符转变为html的,它暗许使用ISO8559-1编码的,所以您要将 excel_reader2.php源码中htmlentities函数改为htmlentities($val,ENT_COMPAT,"GB2312");才行。

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

//”data.xls”是指要导入到mysql中的excel文件
$data->read('data.xls');

KEY `name` ENGINE=MyISAM DEFAULT CHARSET=utf8;

终极来讲说,php-excel-reader操作excel中的多个至关心珍视要的办法

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

@ $db = mysql_connect('localhost', 'root', '123456') or
       die("Could not connect to database.");//连接数据库
mysql_query("set names 'gbk'");//输出汉语
mysql_select_db('mydb');       //选择数据库
error_reporting(E_ALL ^ E_NOTICE);

导入后数据库结果如下:

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

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

for ($i = 1; $i <= $data->sheets[0]['numRows']; $i ) {
//以投注释的for循环打印excel表数据
/*
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j ) {
            echo """.$data->sheets[0]['cells'][$i][$j]."",";
           }
           echo "n";
//PHP开源代码

php源码如下:复制代码 代码如下: query; }catch{ echo "连接失利".$e->getMessage(); } //pdo绑定参数操作 $stmt = $dbh->prepare("insert into alumni 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); //使用php-excel-reader读取excel内容 $data = new Spreadsheet_Excel_Reader(); $data->setOutputEncoding; $data->read; for ($i = 1; $i <= $data->sheets[0]['numRows']; $i ) { for ($j = 1; $j <= 3; $j ) { $student_no = $data->sheets[0]['cells'][$i][1]; $name = $data->sheets[0]['cells'][$i][2]; $gid = $data->sheets[0]['cells'][$i][3]; } //将获取的excel内容插入到数据库 $stmt->execute(); } echo "施行成功"; echo "最终插入的ID:".$dbh->lastInsertId(); ?> 酌量到excel的量比比较大,使用了PDO的绑定操作!

echo $data->dump;

 代码如下

*/
//以下代码是将excel表数据【3个字段】插入到mysql中,依照你的excel表字段的略微,改写以下代码吧!
    $sql = "INSERT INTO test VALUES('".
               $data->sheets[0]['cells'][$i][1]."','".
                 $data->sheets[0]['cells'][$i][2]."','".
                 $data->sheets[0]['cells'][$i][3]."')";
    echo $sql.'
';
       $res = mysql_query($sql);
}

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 [2] => Array [3] => Array [4] => Array [2] => Array ( [1] => Array ( [string] => 1 [raw] => 1 [rectype] => unknown [format] => %s [formatIndex] => 0 [fontIndex] => 0 [formatColor] => [xfIndex] => 15 ) [2] => Array [3] => Array ( [string] => 22 [raw] => 22 [rectype] => unknown [format] => %s [formatIndex] => 0 [fontIndex] => 0 [formatColor] => [xfIndex] => 15 ) [4] => Array [3] => Array ( [1] => Array ( [string] => 2 [raw] => 2 [rectype] => unknown [format] => %s [formatIndex] => 0 [fontIndex] => 6 [formatColor] => [xfIndex] => 23 ) [2] => Array [3] => Array ( [string] => 33 [raw] => 33 [rectype] => unknown [format] => %s [formatIndex] => 0 [fontIndex] => 6 [formatColor] => [xfIndex] => 23 ) [澳门新萄京Excel类读取excel文件并且导入数据库,PHP导入导出Excel文件的方法。4] => Array [4] => Array ( [1] => Array ( [string] => 3 [raw] => 3 [rectype] => unknown [format] => %s [formatIndex] => 0 [fontIndex] => 0 [formatColor] => [xfIndex] => 15 ) [2] => Array [3] => Array ( [string] => 44 [raw] => 44 [rectype] => unknown [format] => %s [formatIndex] => 0 [fontIndex] => 0 [formatColor] => [xfIndex] => 15 ) [4] => Array [5] => Array ( [2] => Array [3] => Array ( [xfIndex] => 24 [hyperlink] => Array ( [flags] => 23 [desc] => www.phpddt.com [link] => ) ) ) ) ) [1] => Array ( [maxrow] => 0 [maxcol] => 0 [numRows] => 0 [numCols] => 0 ) [2] => Array ( [maxrow] => 0 [maxcol] => 0 [numRows] => 0 [numCols] => 0 ) ) 那样你应当精晓怎么取excel中的数据了,好了,使用php-excel-reader读取excel文件正是那样简单

 

?>

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

例.导出excel文件

[link] =>
)
)
)
)
)
[1] => Array
(
[maxrow] => 0
[maxcol] => 0
[numRows] => 0
[numCols] => 0
)
[2] => Array
(
[maxrow] => 0
[maxcol] => 0
[numRows] => 0
[numCols] => 0
)
)

例如说笔者急需二个做php导出 excel的的次序,只供给把相关的数据导出到excel表就足以了,这么轻易的操作就无需用那多少个类库什么的了。直接用header的章程就足以了:header("Content-type:application/vnd.ms-excel");

拜候代码:

 代码如下

<?php
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=Export_test.xls");
$tab="t"; $br="n";
$head="编号".$tab."备注".$br;
//输出内容如下: 
echo $head.$br;
echo  "test321318312".$tab; 
echo  "string1";
echo  $br;

echo  "330181一九八九06061234".$tab;  //直接输出会被Excel识别为数字类型
echo  "number";
echo  $br;

echo  "="330181壹玖捌玖06061234"".$tab;  //原样输出须求管理
echo  "string2";
echo  $br;
?>

在导出后会发现二个主题材料,借使数额是数字会情不自禁部分意外的景况。例如,"012345",在excel中会造成"12345";如若输入身份ID编号那样的长数字,在excel中会用科学计数法表示出来,並且最后的二个人数字会冒出偏差,变位0000等情事。那就须要把单元格设置为文本格式,方法是
echo  "="330181一九八八06061234""假设程序是utf-8编码的,还亟需用iconv函数去转码,不然是会乱码的,乱码的。

另word格式导入相符,,钦赐header就能够了:

 代码如下

header("Content-Type:   application/msword");       
header("Content-Disposition:   attachment;   filename=doc.doc"); 

本文由澳门新萄京发布于www.澳门新萄京赌场,转载请注明出处:澳门新萄京Excel类读取excel文件并且导入数据库,

上一篇:澳门新萄京PHP导出excel类完整实例程序,Excel导出 下一篇:没有了
猜你喜欢
热门排行
精彩图文