这个主要是采用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;
}
}
?>
分享到:
相关推荐
PHPExcelreader读取excel,并将读取结果插入数据库!页面只要添加一个file控件,命名name="file"就可以了!我的excel文件只有4个列,所以就写成了固定的,可以自己修改,下载的PHPExcelreader里面也有例子
phpExcelReader php读取excel 支持2007 和 2003的excel文档
php读取excel工具PHPExcelreader
phpExcelReader(一个读取Excel xsl文件内容的一个PHP类) 原始的错误我已经修改了,可以直接使用。不支持excel2007
php读取excel类(phpExcelReader) $data->sheets[0]['numRows'] - 行数 $data->sheets[0]['numCols'] - 列数 $data->sheets[0]['cells'][$i][$j] - 行$i 列$j里的数据 ...可以读取复杂的二维excel表.
上传Excel文件并读取Excel文件中的内容并插入数据库,用的是phpExcelReader类,操作成功!
使用phpExcelReader导入Excel文档到MySQL数据库中的方法,上传Excel入库到数据库中
可以在线读取excel文件,比较方便,详细看例子。 不支持中文命名解决办法:存文件的时候存显示名称,并存一个英文同步的名称(可以是时间戳来对应)。
使用phpExcelReader导入Excel2003文档到MySQL数据库中,附上几个例子和phpexcelreader类库
php读取excel数据的类包,php读取excel数据的类包,php读取excel数据的类包,php读取excel数据的类包,
PHPExcelReader比较轻量级,仅支持Excel的读取,实际上就是一个Reader。但是可惜的是不能够支持Excel 2007的格式(.xlsx)。 PHPExcel比较强大,能够将内存中的数据输出成Excel文件,同时还能够对Excel做各种操作,...
很多新手朋友对于如何使用php-excel-reader读取excel内容存入数据库,甚是疑惑,本文将介绍详细的解决方案,需要了解的朋友可以参考下
PHP Excel Reader是一个读取Excel xsl文件内容的一个PHP类,能够获取.XLS文件中任意单元格的值和格式。
该软件实用程序可从Excel工作表中读取数据并将其免费导入到Tally软件中,而无需使用任何第三方工具或软件。 我们使用PHPExcelReader类读取Excel数据,并使用PHP Curl将其发布到Tally ERP 9中。读取Excel数据并将其...
很简单实用的phpexcelreader,可以读取.xls文件中的内容。包含源代码和应用实例。
研究了一下~方法不少~最后决定用Excel导入~在网上搜了很多这方面的资料,发现都是将excel文件另存为csv文件,然后从csv文件导入。这里介绍一个直接将excel文件导入mysql的例子。我花了一晚上的时间测试,无论导入简...