ホームページ > バックエンド開発 > PHPチュートリアル > phpexcelreader は Excel を読み取り、テーブルとフィールドを自動的に生成します

phpexcelreader は Excel を読み取り、テーブルとフィールドを自動的に生成します

WBOY
リリース: 2016-06-13 13:20:46
オリジナル
917 人が閲覧しました

phpexcelreader は Excel を読み取り、テーブルとフィールドを自動的に生成します
これは主にphpexcelreaderの機能を利用して実装されており、Excelのファイル名とExcelの1行目を元にテーブル名とフィールドを生成し、2行目から順にデータをインポートします。



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


?>
ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート