您的位置:首页 > 编程语言 > PHP开发

如何通过PHP将excel的数据导入MySQL中

2014-05-13 01:05 701 查看
php使用phpExcelReader导入excel的方法

phpExcelReader是专门用来读取文件的。返回一个数组,包含表格的所有内容。

该 class 使用的方法可以参考网站下载回来的压缩档中的 example.php。

有几点要需要注意:

1、reader.php 中:将 require_once 'Spreadsheet/Excel/Reader/OLERead.php';改为 require_once 'oleread.inc';

2、example.php 中:修改 $data->setOutputEncoding('CP1251');为 $data->setOutputEncoding('CP936');或者是$data->setOutputEncoding('gbk');

3、修改 nl2br(htmlentities($data->sheets[$sheet]['cells'][$row][$col]));为 $table_output[$sheet] .= nl2br(htmlspecialchars($data->sheets[$sheet]['cells'][$row][$col]));

不然中文会有问题。

繁体的话可以修改为CP950、日文是CP932,具体可参考codepage说明。

===========================================================

require_once 'excel/reader.php';

$data = new Spreadsheet_Excel_Reader();

$data->setOutputEncoding('gbk'); //设置编码

$data->read('徐州.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 "<br/>";

}

-------------------------------------------------------------------------------------------------------

如何通过PHP将excel的数据导入MySQL中

在开发PHP程序时,很多时候我们会有将数据批量导入数据库的需求,如学生信息批量添加到数据库中,而事先用excel编排好,对excel实行操作,便是我们比较常用的选择方式。

在对excel的操作中,phpExcelReade便是很多人的共同选择。在具体实现中,我们可以以文件上传方式将excel文件上传到服务器中的某个位置,通过以下操作将excel中的数据导入到数据库后,在将上传的文件删除即可。

代码如下:



$dir=dirname(__FILE__); //获取当前脚本的绝对路径

$dir=str_replace("\","/",$dir)."/";

$filename='uploadFile.xls'; //可以定义一个上传后的文件名称

$result=move_uploaded_file($_FILES['upload'] ['tmp_name'],$dir.$filename);//假如上传到当前目录下

if($result) //如果上传文件成功,就执行导入excel操作

{

require_once 'phpExcelReader/Excel/reader.php';

$data = new Spreadsheet_Excel_Reader();

$data->setOutputEncoding('utf-8');//设置在页面中输出的编码方式,而不是utf8

// 该方法会自动判断上传的文件格式,不符合要求会显示错误提示信息(错误提示信息在该方法内部)。

$data->read("$filename"); //读取上传到当前目录下名叫$filename的文件

error_reporting(E_ALL ^ E_NOTICE);

//如果excel表带标题,则从$i=2开始,去掉excel表中的标题部分(要将$i<=改为$i<否则会插入一条多余的空数据)

for ($i = 2; $i < $data->sheets[0]['numRows']; $i++)

{

$sql = "INSERT INTO user (stuid,class,name,sex,classNum,tel,addr,remark) VALUES('".

$data->sheets[0]['cells'][$i][1]."','". //学号

$data->sheets[0] ['cells'][$i][2]."','". //班级

$data->sheets[0]['cells'] [$i][3]."','". //姓名

$data->sheets[0]['cells'][$i] [4]."','". //性别

$data->sheets[0]['cells'][$i] [5]."','". //班内序号

$data->sheets[0]['cells'][$i] [6]."','". //联系电话

$data->sheets[0]['cells'][$i] [7]."','". //联系地址

$data->sheets[0]['cells'][$i][8]."')"; //附注

$db->query($sql);

$insert_info.= " $sql

n"; //可以用来显示数据插入的信息

}

$totalNums=$data->sheets[0]['numRows']-2;//求出导入的总数据条数(这里是减去2,才会得到去除标题后的总数据)

//echo "导入成功!";

unlink("$filename"); //删除上传的excel文件

}

else

{

$errmsg="上传失败";

}

=======================================================================


zendframework上传文件

此方法适用于1.6或更高版本。

1.先在view页面写html代码。

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title></title>

</head>

<body>

<form enctype="multipart/form-data" action="/index/upload" method="POST">

<input type="hidden" name="MAX_FILE_SIZE" value="100000" /> Choose a

file to upload: <input name="uploadedfile" type="file" /> <br />

<input type="submit" value="Upload File" /></form>

</body>

</html>

上面就不介绍了,很简单。下面是后台代码。

2.

public function uploadAction() {

$adapter = new Zend_File_Transfer_Adapter_Http ( );

$adapter->setDestination ( 'd:\new' );设置路径

if (! $adapter->receive ()) {

$messages = $adapter->getMessages ();//检测

echo implode ( "\n", $messages );

}



$adapter->addValidator ( 'Extension', false, 'jpg,png,gif' )->addValidator ( 'Size', false, 102400 )->addValidator ( 'Count', false, 1 );//配置 英文都应该看的懂吧

}

主要就是$adapter设置可以设置文件格式,上传文件数量,大小。基本上都用的到,其它功能用到再加,最近zend_file(),变动不少,大家一起学习吧!

=======================================================================


1. [代码]Zend Framework文件上传重命名

//实例化文件上专类
$fName=$this->_request->getPost('fName');
$adapter = new Zend_File_Transfer_Adapter_Http();
//存放上传文件的文件夹
$adapter->setDestination('/opt/lampp/htdocs/blog/upload');
//上传配置
$adapter
->addValidator ( 'Extension', false, $configs['extension'])//文件格式限制
->addValidator('Size', false, array('min' =>floatval($configs['minsize']), 
	'max' => floatval($configs['maxsize'])))//设置上传文件的大小在1-2M之间
->addValidator ( 'Count', false, array('min' => intval($configs['mincount']), 
	'max' => intval($configs['maxcount'])) );//上传文件数量
//重命名配置
$fileInfo = $adapter->getFileInfo();//获取基本配置
$extName=$this->getExtension($fileInfo);//获取扩展名
$filename=md5(time()+$fileInfo['fFile']['name']).'.'.$extName;//重命名
$adapter->addFilter('Rename', array('target' => $filename, 'overwrite' => true));//执行重命名

//返回上传后出现在信息
if (!$adapter->receive())
{
	$messages = $adapter->getMessages ();//检测
	//Zend_Debug::dump($messages);
	$message='';
	if(is_array($messages))
	{
		foreach($messages as $k=>$v)
		{
			$message.=$k.':'.$v.'<br>';
		}
	}
	else
	{
		$message=$messages;
	}
}
else
{
	$this->view->message='上传成功!';
}



2. [代码]获取文件扩展名

/**
 * 获取文件扩展名
 * @param String $name 	文件名词
 * @author 
 */
public function getExtension ($name)
{
	$fname='';
	if($name)
	{
		foreach ($name as $val)
		{
			$fname=$val['name'];
		}
		$exts = @split("[/\\.]", $fname) ;
		$n = count($exts)-1;
		$exts = $exts[$n];
		return $exts;
	}
}




下载地址:

phpExcelReader:http://sourceforge.net/projects/phpexcelreader/

PHPExcel:http://www.codeplex.com/PHPExcel/Wiki/View.aspx?title=Documents&referringTitle=Home
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: