乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > php把excel导入到mysql中乱码-mysql导入excel乱码,mysql导入乱码

php把excel导入到mysql中乱码-mysql导入excel乱码,mysql导入乱码

作者:乔山办公网日期:

返回目录:excel表格制作


下载 PHPExcel
    

require_once( './PHPExcel/IOFactory.php');
$filePath = 'D:/xxx.xlsx'; //excel 文件名 
$objReader = new PHPExcel_Reader_Excel2007();  //具体查看(Documentation/Examples/Reader/exampleReader01.php)
$objPHPExcel = $objReader->load($filePath);
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
$insql = 'insert into 表名(x,x,x) valeus';
//遍历数组 $sheetData
//如果有标题 先删除 unset($sheetData[1]);
foreach($sheetData as $k => $data){
    $insql .= '('.$data['A'].','.$data['B'].','.$data['C'].'),';
    //一次插入100条数据  减少7a64e4b893e5b19e366数据库压力
    if(($k+1 / 100) == 0){
        $insql = rtrim($insql,',').';'; //将最后的逗号替换成分好
        //插入数据库 并且重置 字符串 $insql  
        //或者保存到文件中 利用source 命令插入数据库
    }
}


只要保持编码一致 就不会出现乱码。

excel导入到mysql过程:
excel编码-->程序编码-->数据库编码

具体的你可以参阅PHP相关手册或工具书中 编码-字符集 相关章节,进行正确的编码转换 即可

程序编码-->数据库编码 过程中
具体的方法一般在 连接数据库后执行SQL语句:
SET NAMES 'utf8';

SET NAMES 'gbk';
即可解决
把excel 改为 cvs文件
<?
//连接数据库文件
$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文件中每行记录的值636f70797a64361
//将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);
}
?>

第一步:建立数据库和数据表(按照自己7a64e59b9ee7ad94365的Excel数据设立字段)。
[sql] view plain copy print?
CREATE DATABASE php_excel;
USE php_excel;
CREATE TABLE IF NOT EXISTS php_excel(
id int(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
gid varchar(20) NOT NULL,
stu_no varchar(20) NOT NULL,
name varchar(45) NOT NULL,
age int(4) NOT NULL
)ENGINE=MyISAM DEFAULT CHARSET=utf8;

第二步:前台index.php文件。
[html] view plain copy print?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:///TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http:///1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>phpexcel导入excel数据到MYSQL数据库</title>
</head>

<body>
<form name="frm1" action="insertdb.php" method="post" enctype="multipart/form-data">
<input name="filename" type="file" />
<input name="submit" type="submit" value="import" />
</form>
</body>
</html>

第三步:向数据库插入数据的insertdb.php文件。
[php] view plain copy print?
session_start();
header("Content-type:text/html;charset:utf-8");
//全局变量

$succ_result=0;
$error_result=0;
$file=$_FILES['filename'];
$max_size="2000000"; //最大文件限制(单位:byte)
$fname=$file['name'];
$ftype=strtolower(substr(strrchr($fname,'.'),1));
//文件格式
$uploadfile=$file['tmp_name'];
if($_SERVER['REQUEST_METHOD']=='POST'){
if(is_uploaded_file($uploadfile)){
if($file['size']>$max_size){
echo "Import file is too large";
exit;
}
if($ftype!='xls'){
echo "Import file type is error";
exit;
}
}else{
echo "The file is not empty!";
exit;
}
}
require("./conn.php"); //连接mysql数据库

//调用phpexcel类库
require_once 'PHPExcel.php';
require_once 'PHPExcel\IOFactory.php';
require_once 'PHPExcel\Reader\Excel5.php';

$objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format
$objPHPExcel = $objReader->load($uploadfile);
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
$arr_result=array();
$strs=array();

for($j=2;$j<=$highestRow;$j++)
{
unset($arr_result);
unset($strs);
for($k='A';$k<= $highestColumn;$k++)
{
//读取单元格
$arr_result .= $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().',';
}
$strs=explode(",",$arr_result);
$sql="insert into php_excel(gid,stu_no,name,age) values ($strs[0],'$strs[1]','$strs[2]',$strs[3])";
echo $sql."<br/>";
mysql_query("set names utf8");
$result=mysql_query($sql) or die("执行错误");

$insert_num=mysql_affected_rows();
if($insert_num>0){
$succ_result+=1;
}else{
$error_result+=1;
}

}
echo "插入成功".$succ_result."条数据!!!";
echo "插入失败".$error_result."条数据!!!";

其中conn.php代码如下:
[php] view plain copy print?
$mysql=mysql_connect("localhost","root","") or die("数据库连接失败!");
mysql_select_db("php_excel",$mysql);
mysql_query("set names utf8");

我的导入效果如下:
至此,从Excel文件读取数据批量导入到Mysql数据库完成。

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网