PHP导入Excel到MySQL的方法

网上搜了很多这方面的资料,发现都是将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]  view plain copy
  1. < ?php   
  2. require_once 'reader.php'// ExcelFile($filename, $encoding); $data = new Spreadsheet_Excel_Reader(); // Set output Encoding. $data->setOutputEncoding('gbk');   
  3. //”data.xls”是指要导入到mysql中的excel文件   
  4. $data->read('data.xls');   
  5. $db = mysql_connect('localhost''root''123456'or   
  6. die("Could not connect to database.");//连接数据库   
  7. mysql_query("set names 'gbk'");//输出中文   
  8. mysql_select_db('mydb'); //选择数据库   
  9. error_reporting(E_ALL ^ E_NOTICE);   
  10. for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {   
  11. //以下注释的for循环打印excel表数据   
  12. /*  
  13. for ($j = 1; $j < = $data->sheets[0]['numCols']; $j++) {  
  14. echo "\"".$data->sheets[0]['cells'][$i][$j]."\",";  
  15.  
  16. echo "\n";  
  17. */   
  18. //以下代码是将excel表数据【3个字段】插入到mysql中,   
  19. 根据你的excel表字段的多少,改写以下代码吧!   
  20. $sql = "INSERT INTO test VALUES('".   
  21. $data->sheets[0]['cells'][$i][1]."','".   
  22. $data->sheets[0]['cells'][$i][2]."','".   
  23. $data->sheets[0]['cells'][$i][3]."')";   
  24. echo $sql.'< br />';   
  25. $res = mysql_query($sql);   
  26. }   
  27. ?>   

以上就是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]  view plain copy
  1. <?php   
  2. require_once'Excel/reader.php';   
  3. $data= newSpreadsheet_Excel_Reader();   
  4. $data->setOutputEncoding('UTF-8');   
  5. $data->read('data.xls');   
  6. $rs$data-> getExcelResult();   
  7. print_r($rs);   
  8. ?>   


 


首先下载 , 解压 phpExcelReader.zip

然后把 phpExcelReader\Excel 下面的oleread.inc的代码都合并到 reader.php 并且 
class Spreadsheet_Excel_Reader 代码在下方注释掉 require_once 'Spreadsheet/Excel/Reader/OLERead.php'; 这一行,然后在class Spreadsheet_Excel_Reader 里面加一个方法
[php]  view plain copy
  1. functiongetExcelResult() {   
  2.   $resultarray();   
  3.   for($i= 1; $i<= $this->sheets[0]['numRows']; $i++) {   
  4.     for($j= 1; $j<= $this->sheets[0]['numCols']; $j++) {   
  5.     $result[$i][$j] = $this->sheets[0]['cells'][$i][$j];   
  6.     }   
  7.   }   
  8.   return$result;   
  9. }   

范例代码二:
[php]  view plain copy
  1. <?php   
  2. require_once'reader.php';   
  3. $data= newSpreadsheet_Excel_Reader();   
  4. $data->setOutputEncoding('gbk');   
  5.  //”data.xls”是指要导入到mysql中的excel文件   
  6. $data->read('data.xls');   
  7. @$db= mysql_connect('localhost''root''test') ordie("Could not connect to database.");//连接数据库   
  8. mysql_query("set names 'gbk'");//输出中文   
  9. mysql_select_db('test'); //选择数据库   
  10. error_reporting(E_ALL ^ E_NOTICE);   
  11. for($i= 1; $i<= $data->sheets[0]['numRows']; $i++){   
  12.   $sql"INSERT INTO test VALUES('"$data->sheets[0]['cells'][$i][1]."','". $data->sheets[0]['cells'][$i][2]."')";   
  13.   echo$sql.'<br />';   
  14.   $res= mysql_query($sql);   
  15. }   
  16. ?>   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值