如何用PHP把EXCEL表导入Mysql数据库

时间:2020-12-15 06:44:15
如题,有一EXCEL数据表,现要将此表通过PHP来导入MYSQL数据库,要怎么做到啊?我按照网络上的方法试了一下,但导入数据库的都是乱码,“成功导入数据! 成功导入数据! 成功导入数据! 成功导入数据!##07"?"# 成功导入数据! 成功导入数据! 成功导入数据!#}-}' .00\)_ *}A}) a.00\)_ *骑?-# 成功导入数据! 成功导入数据! 成功导入数据! 成功导入数据! 成功导入数据!#}A} .00\)_ *23-# 成功导入数据! You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1”  以上就是导入后网页上显示的,数据库里也是乱码,这个要怎么写啊?
我用的代码是:
<?
//连接数据库文件
$connect=mysql_connect("localhost","admin","admin") or die("链接数据库失败!"); 
//连接数据库(test)
mysql_select_db("testcg",$connect) or die (mysql_error()); 

$temp=file("test.csv");//连接EXCEL文件,格式为了.csv 
for ($i=0;$i<count($temp);$i++) 

$string=explode(",",$temp[$i]);//通过循环得到EXCEL文件中每行记录的值 
//将EXCEL文件中每行记录的值插入到数据库中
$q="insert into ceshi (name,num,dom) values('$string[0]','$string[1]','$string[2]');";
mysql_query($q) or die (mysql_error()); 

if (!mysql_error()); 

echo " 成功导入数据!"; 
 }
 echo $string[4]."\n";
unset($string); 
 } 
?>

32 个解决方案

#1


phpexcel或者pear的一个组件 ,国内有一个excelclass的插件
都是用来处理excel的,前2个功能都比较强大,对编码的支持也都不错,推荐使用pear的那个,名字好像叫spreadsheet reader

phpexcel比较费资源,不过并不是所有的excel都能读取

楼主可以到这里去看看 pear.php.net

#2


顶楼上的回答~~顺便接个分!嘿嘿

#3


AdO直接上传 

注意有些字符mysql或ADO可能不支持

#4


首先确认你的数据库是什么编码的,以utf-8为例,
你首先打开excel 文件,然后保存,选择为另存为.csv文件。
然后用文本编辑器打开.csv文件,另存为utf-8的csv
然后你写php 可以使用php 的getcsv  打开(这样确保你有的字段中含有,而导致解析错误),然后把解析的结果导入到数据库中。
然后完了。

#5


帮着顶吧,顺便学习学习

#6


引用 5 楼 alec163 的回复:
帮着顶吧,顺便学习学习

#7


到微软网站上去找一下源代码,我们公司以前有人做过

把excel表中的数据导入mysql中,不是三言两语能够讲明白的啊

#8


介绍一下我的经验,我是吧excel导到txt中然后分行读取得到各条数据然后explode(" ",fgets($file));将各条记录的字段存到数组中
更详细的请到http://mxp556.blog.hexun.com/23315689_d.html浏览

#10


也碰到过LZ的问题:

我是这样处理的,处理第一行数据,如果要将A,B列字段导入MYSQL,我在第C列,这样写:
insert into 表名(表字段A,表字段B) values (A1,B1);
然后往下拖,将所有行的SQL语句生成出来,再将生成的SQL语句复制到MYSQL中执行,就可以了!不知道你那里是否可用……

#11


介绍一下我的经验,我是吧excel导到txt中然后分行读取得到各条数据然后explode(" ",fgets($file));将各条记录的字段存到数组中 
更详细的请到http://mxp556.blog.hexun.com/23315689_d.html浏览

为什么要导入txt中,没有这个必要吧!

#12


引用 10 楼 weagerxie 的回复:
也碰到过LZ的问题: 

我是这样处理的,处理第一行数据,如果要将A,B列字段导入MYSQL,我在第C列,这样写: 
insert into 表名(表字段A,表字段B) values (A1,B1); 
然后往下拖,将所有行的SQL语句生成出来,再将生成的SQL语句复制到MYSQL中执行,就可以了!不知道你那里是否可用…… 

这是个小技巧!数据填充
另外这是典型的数据导入导出问题,有工具支持这种任务的!
不要动不动就开始写代码解决问题!

#13


导出为cvs文件,然后可以直接导入到mysql

#14


帮着顶吧,顺便学习学习 

#15


我也是来学习来了。

#16


没有一次导入的办法么?

#17


4楼的方法可以试下,不知道具体的代码

#18


lz写得程序正确啊
是不是,数据库编码,还有就是程序编码的问题啊

#19


1、phpexcel 官方网站: http://www.codeplex.com/PHPExcel 例子一看就懂
导入导出都可以实现
2、
导出 使用pear的Spreadsheet_Excel_Writer类  http://pear.php.net/package/Spreadsheet_Excel_Writer
导入 使用PHP-ExcelReader, 下载地址: http://sourceforge.net/projects/phpexcelreader
一个写excel及导出 一个读excel及导入,我用的是这样的导入导出结合。需要注意的是这种方式导出的excel是95格式的,保存的时候会提示转换到97/03格式。转换格式后的中文才不会是乱码。



#20



function   getmicrotime(){     
            
              list($usec,   $sec)   =   explode("   ",microtime());     
            
                    return   ((float)$usec   +   (float)$sec);   
            }   
    
  $time_start   =   getmicrotime();   
    
  include   ("connectdb.php");   
    
    
  function   insert_data   ($id,$summary,$description,$additional_information,$category)   
    
      {   
            
          $my_query1   =   "insert   into   mantis_bug_text_table   (id,description,additional_information)     
                  
          values   ('$id','$description','$additional_information')";   
          
          $first   =   mysql_query($my_query1);       
    
          $my_query2   =   "insert   into   mantis_bug_table   (id,project_id,summary,bug_text_id)   values   ('$id','$category','$summary','$id')";   
                  
          $second   =   mysql_query($my_query2);       
          
          return;   
      }   
    
  $fp   =   fopen("test.csv","r");   
    
  while($data   =   fgetcsv($fp,'1000',',')){   
    
              insert_data   ($data[0],$data[1],$data[2],$data[3],$data[4]);   
          
              echo   "<font   color   =   #FF0000   size   =   20>数据导入成功!</font><br><br>";       
      }   
  fclose   ($fp);   
    
  $time_end   =   getmicrotime();   
    
  $time   =   $time_end   -   $time_start;   
    
  echo   "程序执行时间:".$time."秒";   

#21


先另存为CSV文件格式,再用上面的方法改改可以的,我测试过的

#22


有个叫phpexcelreader的类,网上有,觉得不错

#23


数据库编码与csv文件编码不一致导致

#24


有没有操作xls格式的呀,我就想要那个

#25


不错,学习学习。

#26


引用 10 楼 weagerxie 的回复:
也碰到过LZ的问题:

我是这样处理的,处理第一行数据,如果要将A,B列字段导入MYSQL,我在第C列,这样写:
insert into 表名(表字段A,表字段B) values (A1,B1);
然后往下拖,将所有行的SQL语句生成出来,再将生成的SQL语句复制到MYSQL中执行,就可以了!不知道你那里是否可用……


这个想法真不错啊 ,不过要是维护网站的人不会这么做就惨了!!!

#27


吥諎,値嘚看看,學習錒!

#28


楼主,导入的文件的路径怎么搞呢?

#29


如何用PHP把EXCEL表导入Mysql数据库

#30


很不错,支持一下

#31


来学习的。。。

#32


来学习的  (*^__^*) 嘻嘻

#1


phpexcel或者pear的一个组件 ,国内有一个excelclass的插件
都是用来处理excel的,前2个功能都比较强大,对编码的支持也都不错,推荐使用pear的那个,名字好像叫spreadsheet reader

phpexcel比较费资源,不过并不是所有的excel都能读取

楼主可以到这里去看看 pear.php.net

#2


顶楼上的回答~~顺便接个分!嘿嘿

#3


AdO直接上传 

注意有些字符mysql或ADO可能不支持

#4


首先确认你的数据库是什么编码的,以utf-8为例,
你首先打开excel 文件,然后保存,选择为另存为.csv文件。
然后用文本编辑器打开.csv文件,另存为utf-8的csv
然后你写php 可以使用php 的getcsv  打开(这样确保你有的字段中含有,而导致解析错误),然后把解析的结果导入到数据库中。
然后完了。

#5


帮着顶吧,顺便学习学习

#6


引用 5 楼 alec163 的回复:
帮着顶吧,顺便学习学习

#7


到微软网站上去找一下源代码,我们公司以前有人做过

把excel表中的数据导入mysql中,不是三言两语能够讲明白的啊

#8


介绍一下我的经验,我是吧excel导到txt中然后分行读取得到各条数据然后explode(" ",fgets($file));将各条记录的字段存到数组中
更详细的请到http://mxp556.blog.hexun.com/23315689_d.html浏览

#9


#10


也碰到过LZ的问题:

我是这样处理的,处理第一行数据,如果要将A,B列字段导入MYSQL,我在第C列,这样写:
insert into 表名(表字段A,表字段B) values (A1,B1);
然后往下拖,将所有行的SQL语句生成出来,再将生成的SQL语句复制到MYSQL中执行,就可以了!不知道你那里是否可用……

#11


介绍一下我的经验,我是吧excel导到txt中然后分行读取得到各条数据然后explode(" ",fgets($file));将各条记录的字段存到数组中 
更详细的请到http://mxp556.blog.hexun.com/23315689_d.html浏览

为什么要导入txt中,没有这个必要吧!

#12


引用 10 楼 weagerxie 的回复:
也碰到过LZ的问题: 

我是这样处理的,处理第一行数据,如果要将A,B列字段导入MYSQL,我在第C列,这样写: 
insert into 表名(表字段A,表字段B) values (A1,B1); 
然后往下拖,将所有行的SQL语句生成出来,再将生成的SQL语句复制到MYSQL中执行,就可以了!不知道你那里是否可用…… 

这是个小技巧!数据填充
另外这是典型的数据导入导出问题,有工具支持这种任务的!
不要动不动就开始写代码解决问题!

#13


导出为cvs文件,然后可以直接导入到mysql

#14


帮着顶吧,顺便学习学习 

#15


我也是来学习来了。

#16


没有一次导入的办法么?

#17


4楼的方法可以试下,不知道具体的代码

#18


lz写得程序正确啊
是不是,数据库编码,还有就是程序编码的问题啊

#19


1、phpexcel 官方网站: http://www.codeplex.com/PHPExcel 例子一看就懂
导入导出都可以实现
2、
导出 使用pear的Spreadsheet_Excel_Writer类  http://pear.php.net/package/Spreadsheet_Excel_Writer
导入 使用PHP-ExcelReader, 下载地址: http://sourceforge.net/projects/phpexcelreader
一个写excel及导出 一个读excel及导入,我用的是这样的导入导出结合。需要注意的是这种方式导出的excel是95格式的,保存的时候会提示转换到97/03格式。转换格式后的中文才不会是乱码。



#20



function   getmicrotime(){     
            
              list($usec,   $sec)   =   explode("   ",microtime());     
            
                    return   ((float)$usec   +   (float)$sec);   
            }   
    
  $time_start   =   getmicrotime();   
    
  include   ("connectdb.php");   
    
    
  function   insert_data   ($id,$summary,$description,$additional_information,$category)   
    
      {   
            
          $my_query1   =   "insert   into   mantis_bug_text_table   (id,description,additional_information)     
                  
          values   ('$id','$description','$additional_information')";   
          
          $first   =   mysql_query($my_query1);       
    
          $my_query2   =   "insert   into   mantis_bug_table   (id,project_id,summary,bug_text_id)   values   ('$id','$category','$summary','$id')";   
                  
          $second   =   mysql_query($my_query2);       
          
          return;   
      }   
    
  $fp   =   fopen("test.csv","r");   
    
  while($data   =   fgetcsv($fp,'1000',',')){   
    
              insert_data   ($data[0],$data[1],$data[2],$data[3],$data[4]);   
          
              echo   "<font   color   =   #FF0000   size   =   20>数据导入成功!</font><br><br>";       
      }   
  fclose   ($fp);   
    
  $time_end   =   getmicrotime();   
    
  $time   =   $time_end   -   $time_start;   
    
  echo   "程序执行时间:".$time."秒";   

#21


先另存为CSV文件格式,再用上面的方法改改可以的,我测试过的

#22


有个叫phpexcelreader的类,网上有,觉得不错

#23


数据库编码与csv文件编码不一致导致

#24


有没有操作xls格式的呀,我就想要那个

#25


不错,学习学习。

#26


引用 10 楼 weagerxie 的回复:
也碰到过LZ的问题:

我是这样处理的,处理第一行数据,如果要将A,B列字段导入MYSQL,我在第C列,这样写:
insert into 表名(表字段A,表字段B) values (A1,B1);
然后往下拖,将所有行的SQL语句生成出来,再将生成的SQL语句复制到MYSQL中执行,就可以了!不知道你那里是否可用……


这个想法真不错啊 ,不过要是维护网站的人不会这么做就惨了!!!

#27


吥諎,値嘚看看,學習錒!

#28


楼主,导入的文件的路径怎么搞呢?

#29


如何用PHP把EXCEL表导入Mysql数据库

#30


很不错,支持一下

#31


来学习的。。。

#32


来学习的  (*^__^*) 嘻嘻