`
haimingyoung
  • 浏览: 39976 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

phpexcelreader读取excel自动生成表和字段

    博客分类:
  • PHP
阅读更多
这个主要是采用phpexcelreader的功能实现,根据excel的文件名和excel第一行生成表名及字段,数据从第二行开始依次导入。



phpexcelreader下载地址 : http://sourceforge.net/projects/phpexcelreader/

下载下来有个 “phpExcelReader.zip”的压缩包。解压,我们需要的只有 Excel 文件夹的内容,首先把 “oleread.inc” 改为 “oleread.inc.php”

修改“reader.php”文件

修改第31行  require_once 'Spreadsheet/Excel/Reader/OLERead.php';
改为 ”   :     require_once 'oleread.inc.php';
                 第 261行 =&  改为 =  号就 OK 了

源码及示例文件,以及流程都在下载文件里!
本人php新手,错误之处还请谅解。

上传文件页面!


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Excel管理</title>
<link href="css.css" rel="stylesheet" type="text/css" />
</head>

<body>
<form action="processExcel.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td bgcolor="#eeeeee"><span class="text">请上传你的excel文件:
          <label>
            <input type="file" name="upfile" id="files" />
          </label>
          <label>
            <input type="submit" name="button" id="button" value="上传" />
          </label>
      </span>
        <label></label>
      <span class="text"> (注:excel的格式只能是xls) </span></td>
    </tr>
  </table>
</form>
</body>
</html>


上传文件处理

<?php
if (! empty ( $_FILES ['upfile'] ['name'] )) {
	if ($_FILES ['upfile'] ['error'] > 0) {
		switch ($_FILES ['upfile'] ['error']) {
			case 1 :
				$errorMsg = "上传文件超过限制!";
				break;
			case 2 :
				$errorMsg = "上传文件超过前台指定大小!";
				break;
			case 3 :
				$errorMsg = "上传文件不完整!";
				break;
			case 4 :
				$errorMsg = "没有上传文件!";
				break;
		}
		echo $errorMsg;
	} else {
		
		if (! is_dir ( 'upload' )) {
			mkdir ( 'upload' );
		}
		
		//判断文件格式是否正确
		$imgType = array ('application/octet-stream' ,'application/vnd.ms-excel');
		if (! in_array ( $_FILES ['upfile'] ['type'], $imgType )) {
			echo $_FILES ['upfile'] ['type'] . "不符合文件类型";
			exit ();
		}
		
		if (is_uploaded_file ( $_FILES ['upfile'] ['tmp_name'] )) {
			
			$toFileName = 'upload/' . $_FILES ['upfile'] ['name'];
			//移动临时文件到指定文件夹
			if (move_uploaded_file ( $_FILES ['upfile'] ['tmp_name'], $toFileName )) {
				$excelFileName = $toFileName;
			} else {
				echo "文件上传失败!";
			}
		} else {
			echo "不是上传文件!";
		}
	
	}

} else {
	echo "请选择上传文件!";
} 

?>


解析文件组装sql

<?php

$excelFileName = '';

require_once 'uploadfile.php';

echo "Excel文件路径:".$excelFileName."<br>";

require_once 'reader.php';

$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('utf8');  
//设置数据库连接的用户名及密码
$conn= mysql_connect('localhost','root','root') or die("不能连接到数据库!.");  
//设置编码  
mysql_query("set names 'utf8'");
//数据库名
mysql_select_db('excel'); 

//echo "是否文件=".is_file($excelFileName)."<br>";

if($_POST['button'] && is_file($excelFileName)){

	$data->read($excelFileName);
	
	$str = explode(".",$excelFileName);
	$strname = explode("/",$str[0]);
	$tablename = $strname[1];
	
	echo "表名:".$tablename."<br>";
	
	$existsTable = existsTable($tablename);
	
	//echo $existsTable."<br>";
	
	//echo print_r($data->sheets[0]['cells'][1])."<br>";
	
	echo "<hr>";
	
	$fieldCount = count($data->sheets[0]['cells'][1]);
	
	if ($existsTable == 0) {
		$sql = "create table if not exists ".$tablename." (id int primary key auto_increment,";
		for ($i = 1; $i<=$fieldCount; $i++) {
			if (!empty($data->sheets[0]['cells'][1][$i])) {
				$sql .= $data->sheets[0]['cells'][1][$i]." varchar(255) null,";
			}
		}
		//去掉最后一个逗号
		$sql = substr($sql,0,strlen($sql)-1);
		$sql .= ")";
		
		echo "创建表sql=".$sql."<br>";
		
		$query=mysql_query($sql);
	    			
    	if($query){  
    		$sign = 1;
      		echo "创建表成功!<br>";
         }else{  
         	$sign = 0;
         	echo "创建表失败!<br>";
         	return;
        } 
		
        if ($sign == 1) {
	        for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {
				/*
				print_r($data->sheets[0]['cells'][$i]);
				echo "<br>";
				*/
				$sql = "insert into ".$tablename." values(null,";
				for ($j = 1; $j <= count($data->sheets[0]['cells'][$i]); $j++) {
					$sql .= "'".$data->sheets[0]['cells'][$i][$j]."'".",";
				}
				//去掉最后一个逗号
				$sql = substr($sql,0,strlen($sql)-1);
				$sql .= ")";
				echo "插入表sql=".$sql."<br>";
				$query = mysql_query($sql);
				if($query){  
	      			echo "插入表成功!<br>";
		         }else{  
		         	echo "插入表失败!<br>";
		         	break;
		        }
			}
        }
        
	} else {
		
		for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {
			/*
			print_r($data->sheets[0]['cells'][$i]);
			echo "<br>";
			*/
			$sql = "insert into ".$tablename." values(null,";
			for ($j = 1; $j <= count($data->sheets[0]['cells'][$i]); $j++) {
				$sql .= "'".$data->sheets[0]['cells'][$i][$j]."'".",";
			}
			//去掉最后一个逗号
			$sql = substr($sql,0,strlen($sql)-1);
			$sql .= ")";
			echo "插入表sql=".$sql."<br>";
			$query = mysql_query($sql);
			if($query){  
      			echo "插入表成功!<br>";
	         }else{  
	         	echo "插入表失败!<br>";
	         	break;
	        }
		}
		
	}
	echo "<hr>";
}

function insertData(){
	
}

//查找是否存在表
function existsTable($tablename){
  	$sql="select * from ".$tablename;
	$query=mysql_query($sql);
	if($query){
		return 1;
	}else{
		return 0;
	}
	
}


?>
3
0
分享到:
评论
2 楼 cai314494687 2012-11-23  
需要把uploadfile.php文件中的
$imgType = array ('application/octet-stream' );

改为
$imgType = array ('application/octet-stream' ,'application/vnd.ms-excel');


如果想支持中文的话需要把processExcel.php文件中的
$data->setOutputEncoding('utf8');

改为:
$data->setOutputEncoding('UTF-8');
1 楼 cai314494687 2012-11-23  
学习了,写的很不错。但是有一点, 就是下载的示例有一点是错误的。  文章中的判断文件格式是否正确  与文件中的不一样,文件中的有错,需该改正之后还能用,还是谢谢了

相关推荐

    PHPExcelreader读取excel插入数据库

    PHPExcelreader读取excel,并将读取结果插入数据库!页面只要添加一个file控件,命名name="file"就可以了!我的excel文件只有4个列,所以就写成了固定的,可以自己修改,下载的PHPExcelreader里面也有例子

    phpExcelReader php读取excel

    如标题和描述所言,`phpExcelReader`支持两种主要的Excel文件格式:.xls(Excel 97-2003文件格式)和.xlsx(Excel 2007及更高版本的Open XML格式)。这意味着不论用户上传的是哪种格式的Excel文件,这个库都能轻松...

    php读取excel工具PHPExcelreader

    PHPExcelreader默认会读取Excel文件的第一个工作表。你可以使用`setSheet()`方法选择特定的工作表,或者通过循环遍历所有工作表: ```php foreach ($reader-&gt;sheets as $sheetIndex =&gt; $sheet) { $worksheet = $...

    phpExcelReader(一个读取Excel xsl文件内容的一个PHP类)

    2. **读取工作表**:获取Excel文件中的所有工作表,并选择需要处理的工作表。 3. **遍历单元格**:逐行逐列读取单元格的数据,包括文本、数字、日期等不同类型的值。 4. **处理公式**:如果单元格包含公式,...

    php读取excel类(phpExcelReader)

    php读取excel类(phpExcelReader) $data-&gt;sheets[0]['numRows'] - 行数 $data-&gt;sheets[0]['numCols'] - 列数 $data-&gt;sheets[0]['cells'][$i][$j] - 行$i 列$j里的数据 ...可以读取复杂的二维excel表.

    PHP读取Excel内容

    假设我们有一个名为`users`的数据库表,有`name`, `email`和`phone`三个字段,可以这样操作: ```php // 假设已连接到数据库 $conn = new mysqli('host', 'user', 'password', 'database'); foreach ($excel-&gt;...

    phpexcelreader

    **PHPExcelReader** 是一个PHP库,专门设计用于在服务器端读取Microsoft Excel文件,它为Web应用程序提供了方便的方式来处理Excel数据。这个库允许开发者在不依赖任何其他商业软件或库的情况下,在线读取XLS格式的...

    phpexcelreader带上传功能

    2. **使用phpExcelReader读取Excel文件**: `phpExcelReader`库提供了`read()`函数,可以读取Excel文件并返回一个数组。数组的每一项对应Excel的一个工作表,每个工作表又是一个二维数组,包含所有单元格的数据。 ...

    phpExcelReader

    1. **读取工作表**:`phpExcelReader`可以读取Excel文件中的多个工作表,并将每个工作表的数据组织成数组结构。 2. **处理单元格数据**:它能够解析不同类型的单元格数据,包括文本、数字、日期和公式。 3. **样式...

    PHP读取Excel后插入Sql server

    总的来说,PHP、Excel和SQL Server之间的数据迁移涉及到文件读取、数据库连接、数据处理和事务管理等多个环节。正确地实现这些步骤可以帮助你高效地管理和转换数据。在实际应用中,还需要考虑到错误处理、性能优化和...

    phpexcelreader表格上传本地测试ok

    这些文件展示了如何使用phpexcelreader库来读取和处理Excel数据。例如,`example.php`可能包含以下步骤: 1. **引入库**:首先,需要通过`require_once`引入phpexcelreader类库,确保可以调用其功能。 2. **打开...

    PHP提取excel数据 导入MYSQL

    根据给定的文件信息,我们将深入探讨如何使用PHP来提取Excel...通过上述步骤,我们可以有效地使用PHP读取Excel文件并将数据导入MySQL数据库,实现数据的自动化处理和管理,这对于数据迁移、报表生成等场景非常有用。

    PHP Excel Reader 2.21.zip

    在信息化时代,数据的处理和交换变得越来越频繁,而Excel作为办公领域的重要工具,其文件格式(如.XLS)被广泛应用。PHP作为服务器端脚本语言,用于开发Web应用时,有时需要与Excel文件进行交互,提取或写入数据。...

    php读取.xls内容

    开发者可以通过这个例子了解基本的API用法,例如创建对象,指定文件路径,以及获取工作表和单元格的数据。 `README`文件通常包含了项目的简介、安装步骤、使用指南以及可能的注意事项。对于phpexcelreader,它可能...

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

    在数据读取方面,文档展示了如何使用php-excel-reader库的实例来读取Excel文件,并通过一个双重循环结构遍历Excel文件中的所有行和列。需要注意的是,Excel中的列是以0为基底的数组索引,因此访问数组时需要减去1。 ...

    php编程实现获取excel文档内容的代码实例

    Spreadsheet_Excel_Reader是由Vadim Tkachenko开发的一个用于读取Microsoft Excel文件的PHP类库,最初名为PHPExcelReader,后来更名为Spreadsheet_Excel_Reader。该库支持读取Biff7和Biff8格式的Excel文件,适用于...

    excel读出类

    PHPExcelReader比较轻量级,仅支持Excel的读取,实际上就是一个Reader。但是可惜的是不能够支持Excel 2007的格式(.xlsx)。 PHPExcel比较强大,能够将内存中的数据输出成Excel文件,同时还能够对Excel做各种操作,...

Global site tag (gtag.js) - Google Analytics