在网上搜了很多这方面的资料,发现都是将excel文件另存为csv文件,然后从csv文件导入。这里介绍一个直接将excel文件导入mysql的例子。我花了一晚上的时间测试,无论导入简繁体都不会出现乱码,非常好用。
PHP-ExcelReader,下载地址: http://sourceforge.net/projects/phpexcelreader
说明:
PHP将EXCEL导入MYSQL的测试环境:MYSQL数据库采用utf8编码.导入EXCEL文档是xls格式,经过测试,xlsx 格式[excel 2007]也OK.
请替换成你配置好的数据,如数据库配置等。运行http://localost/test.php实现导入。
以下是我贴出的详细代码,其中test.php为我写的测试文件,reader.php和oleread.inc文件是从上面提供的网址中下载的。
1. PHP将EXCEL导入MYSQL的代码示例test.php
- < ?php
- require_once 'reader.php'; // ExcelFile($filename, $encoding); $data = new Spreadsheet_Excel_Reader(); // Set output Encoding. $data->setOutputEncoding('gbk');
- //”data.xls”是指要导入到mysql中的excel文件
- $data->read('data.xls');
- @ $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);
- 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";
- */
- //以下代码是将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.'< br />';
- $res = mysql_query($sql);
- }
- ?>
< ?php
require_once 'reader.php'; // ExcelFile($filename, $encoding); $data = new Spreadsheet_Excel_Reader(); // Set output Encoding. $data->setOutputEncoding('gbk');
//”data.xls”是指要导入到mysql中的excel文件
$data->read('data.xls');
@ $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);
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";
*/
//以下代码是将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.'< br />';
$res = mysql_query($sql);
}
?>
以上就是PHP将EXCEL导入MYSQL的相关方法介绍,希望多又需要的朋友有所帮助。
*************************************************************************************
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说明。
修改 $data->read('jxlrwtest.xls') 为自己的 excel 文件名,zip 档中附的 jxlrwtest.xls 应该是坏了。
这是下载地址:
phpExcelReader:http://sourceforge.net/projects/phpexcelreader/
PHPExcel:http://www.codeplex.com/PHPExcel/Wiki/View.aspx?title=Documents&referringTitle=Home
范例代码一:
- <?php
- require_once'Excel/reader.php';
- $data= newSpreadsheet_Excel_Reader();
- $data->setOutputEncoding('UTF-8');
- $data->read('data.xls');
- $rs= $data-> getExcelResult();
- print_r($rs);
- ?>
<?php
require_once'Excel/reader.php';
$data= newSpreadsheet_Excel_Reader();
$data->setOutputEncoding('UTF-8');
$data->read('data.xls');
$rs= $data-> getExcelResult();
print_r($rs);
?>
首先下载 , 解压 phpExcelReader.zip
然后把 phpExcelReader\Excel 下面的oleread.inc的代码都合并到 reader.php 并且
class Spreadsheet_Excel_Reader 代码在下方注释掉 require_once 'Spreadsheet/Excel/Reader/OLERead.php'; 这一行,然后在class Spreadsheet_Excel_Reader 里面加一个方法
- functiongetExcelResult() {
- $result= array();
- for($i= 1; $i<= $this->sheets[0]['numRows']; $i++) {
- for($j= 1; $j<= $this->sheets[0]['numCols']; $j++) {
- $result[$i][$j] = $this->sheets[0]['cells'][$i][$j];
- }
- }
- return$result;
- }
functiongetExcelResult() {
$result= array();
for($i= 1; $i<= $this->sheets[0]['numRows']; $i++) {
for($j= 1; $j<= $this->sheets[0]['numCols']; $j++) {
$result[$i][$j] = $this->sheets[0]['cells'][$i][$j];
}
}
return$result;
}
- <?php
- require_once'reader.php';
- $data= newSpreadsheet_Excel_Reader();
- $data->setOutputEncoding('gbk');
- //”data.xls”是指要导入到mysql中的excel文件
- $data->read('data.xls');
- @$db= mysql_connect('localhost', 'root', 'test') ordie("Could not connect to database.");//连接数据库
- mysql_query("set names 'gbk'");//输出中文
- mysql_select_db('test'); //选择数据库
- error_reporting(E_ALL ^ E_NOTICE);
- for($i= 1; $i<= $data->sheets[0]['numRows']; $i++){
- $sql= "INSERT INTO test VALUES('". $data->sheets[0]['cells'][$i][1]."','". $data->sheets[0]['cells'][$i][2]."')";
- echo$sql.'<br />';
- $res= mysql_query($sql);
- }
- ?>