phpexcel导入mysql
1,在excel表每一行后加上=CONCATENATE("insertintotable(字段1,字段2,字段n)values('",字段1坐标,"','",字段2坐标,"','",字段n坐标,"');")
2,将这一列复制到文本文档,以方便浏览和调试错误
3,使用运行sql的工具(我将他们都放到Navicat中创建查询再运行就ok了)4,浏览数据库,修改不合理的字段及值
你把下面的这段粘到excel里面对应的位置
=CONCATENATE("insertintokeywords(id,name,pwd)values('",坐标,"','",坐标,"','",坐标,"');")
按照你表格的排列对好,比如
最后把这一列复制到文本文档,你会看到全是sql的插入语句;
最后用Navicat之类的工具执行这些语句就Ok了。
2. PHP读EXCEL,再写进MYSQL.
主要就是‘php 读取 excel’ 这个步骤,
这个步骤解决了,你就可以了
php读取.XLS的EXCEL文件,如果你想完全自己去写的话会累死,XLS文件是一个二进制文件,读取起来相当麻烦。
Serige 推荐用 phpExcelReader 这个第三方工具来读,我觉得这个不够好。
因为如果你用户提出了 EXCEL 导入功能,肯定会提出 EXCEL 导出功能,phpExcelReader没有导出功能。
推荐你用 PHPExcel 这个第三方控件。
代码给你参考下:
include_once JPATH_LIBRARIES.'/phpexcel/Classes/PHPExcel.php';
$pfx = $this->cfg->dbprefix;
if($conn==null)$conn = $this->conn();
$fileName = 'media/adquiz/GB13745.xls';
$filePath = $fileName;
$PHPExcel = new PHPExcel();
$PHPReader = new PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($filePath)){
$PHPReader = new PHPExcel_Reader_Excel5();
if(!$PHPReader->canRead($filePath)){
echo 'no Excel';
return ;
}
}
$PHPExcel = $PHPReader->load($filePath);
$currentSheet = $PHPExcel->getSheet(0);
$allRow = $currentSheet->getHighestRow();
$sql = "drop procere if exists prcd_adquiz_init_gb13745";
mysql_query($sql,$conn);
$sql = "
create procere prcd_adquiz_init_gb13745()
begin ";
for($currentRow = 1;$currentRow<=$allRow;$currentRow++){
$sql .= "
insert into ".$pfx."adquiz_cfg
(name,value,description,source)
values
('".$currentSheet->getCell('A'.$currentRow)->getValue()."','".$currentSheet->getCell('B'.$currentRow)->getValue()."','学科分类编码','GB13745')
;";
}
$sql .= " end";
mysql_query($sql,$conn);
$sql = "call prcd_adquiz_init_gb13745()";
mysql_query($sql,$conn);
3. excel如何导入mysql
第一步:建立数据库和数据表(按照自己的Excel数据设立字段)。
[sql] view plain 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 print?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/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 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."条数据!!!<br>";
echo "插入失败".$error_result."条数据!!!";
其中conn.php代码如下:
[php] view plain print?
$mysql=mysql_connect("localhost","root","") or die("数据库连接失败!");
mysql_select_db("php_excel",$mysql);
mysql_query("set names utf8");
我的导入效果如下:
至此,从Excel文件读取数据批量导入到Mysql数据库完成。
4. 如何通过PHP实现EXCEL与MYSQL之间的导入导出
1.先介绍一下这个Excel数据库的结构,且命名为E.xls,字段有4个(40个也一样搞定),字段名为a,b,c,d,接着对jm.xls做分解:
1)选中字段a中的全部记录,选择"复制"
2)新建一个Excel数据库文件,把复制过来的数据粘贴在一个空白的字段(通常是A)下,保证其他字段空白,保存为a.xls
3)另存a.xls为a.txt(格式为"文本文件(制表符分隔)")
4)E.xls中其他3个字段的数据按1到3步骤继续生成b.txt,c.txt和d.txt。
2.完成上述步骤后,你已经完成了大部分的工作,下面就由php和mysql来完成,很简单:
1)要把数据放在mysql中,必须建立一个mysql数据库文件名为dbname(与php代码中的dbname要一致),包括表tbname(与php代码中的tbname要一致),4个字段inc char(100),adds char(100),pri char(100),tel char(100),大小要根据Excel中字段大小做调整,否则可能出现部分值丢失。
2)再编写php代码,是最主要的,代码如下:
------txt2mysql.php---------
<?
$inc=file("a.txt");
$adds=file("b.txt");
$pri=file("c.txt");
$tel=file("d.txt");
$i=0;
mysql_connect();
while (strlen($inc[$i])>0)
{
$sql="insert into tbname values ('$inc[$i]','$adds[$i]','$pri[$i]','$tel[$i]')";
$do=mysql_db_query("dbname",$sql);
$i=$i+1;
echo '<br>';
}
$s="select * from tbname";
$gg=mysql_db_query("dbname",$s);
$n=mysql_num_rows($gg);
mysql_close();
echo '<br>';
echo "共添加了".$n."个记录";
?>
这种方法很简单吧!我刚试了一下挺管用的。你稍微改一下,相信能完成!
关键在于,如何把excel 中的数据读取出来,导入是很简单的事。
分别 把相应的列 另存为,相应的txt。就能得到!然后 以数组的方式读取。
5. 用phpexcel把excel中的数据导入到MYSQL中日期发生错误如何解决
授之以鱼不如授之以渔,我教你个思路。
步骤:
1、将一个带有日期字段的表导出成EXCEL文件。
2、打开EXCEL文件,查看日期的在表格中的存储方式。
3、模仿这种存储方式,将原来的数据修改成这种存储方式。
4、将EXCEL进行导入MYSQL中
5、查看数据是否符合要求。
备注:可以目标表可以的日期字段修改为varchar格式试一试。最后祝楼主工作顺利。
6. 求关于php excel导入大数据到mysql的解决办法
下载 PHPExcel
require_once('./PHPExcel/IOFactory.php');
$filePath='D:/xxx.xlsx';//excel文件名
$objReader=newPHPExcel_Reader_Excel2007();//具体查看(Documentation/Examples/Reader/exampleReader01.php)
$objPHPExcel=$objReader->load($filePath);
$sheetData=$objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
$insql='insertinto表名(x,x,x)valeus';
//遍历数组$sheetData
//如果有标题先删除unset($sheetData[1]);
foreach($sheetDataas$k=>$data){
$insql.='('.$data['A'].','.$data['B'].','.$data['C'].'),';
//一次插入100条数据减少数据库压力
if(($k+1/100)==0){
$insql=rtrim($insql,',').';';//将最后的逗号替换成分好
//插入数据库并且重置字符串$insql
//或者保存到文件中利用source命令插入数据库
}
}
7. 如何通过PHP将excel的数据导入MySQL中
准备工作: 下载PHP-ExcelReader,下载后用到\phpExcelReader\Excel目录下的oleread.inc和reader.php两个文件,并将reader.php文件打开后require_once 'Spreadsheet/Excel/Reader/OLERead.php';屏蔽掉,增加为require_once 'oleread.inc'; 然后直接将这两个文件复制到服务器下WAMP,直接复制到WWW目录下,再将所需要的excel文件考进来我的文件是classify.xls,然后需要一个调用reader.php的文件,源代码如下:
ExcelToMysql.php
<?php
require_once 'reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('gbk');
$data->read('classify.xls'); //”classify.xls”是指要导入到mysql中的excel文件
@ $db = mysql_connect("localhost", "root", "") or
die("Could not connect to database.");//连接数据库
mysql_query("set names 'gbk'");//输出中文
mysql_select_db('japlearn'); //选择数据库
error_reporting(E_ALL ^ E_NOTICE);
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
//以下注释的for循环打印excel表数据
//以下代码是将excel表数据【6个字段】插入到mysql中,根据你的excel表字段的多少,改写以下代码吧!
$sql = "INSERT INTO classify 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]."')";
echo $sql.'<br />';
$res = mysql_query($sql);
}
?>
把上面代码注释的地方替换成自己配置好的数据,如数据库配置等。运行本机测试地址实现导入。
8. phpexcel导入excel到mysql,,坐等
这个嘛,需要多次调试的啊!
vendor("PHPExcel.PHPExcel");//这里是导入PHPexcl,我用的thinkphp框架!其他框架自己导入文件
$file_name=excel文件路径;//这里是EXCEL文件路径
$objReader=PHPExcel_IOFactory::createReader('Excel5');//不要管这行
$objPHPExcel=$objReader->load($file_name,$encode='utf-8');//把EXCEL转化为对象
$sheet=$objPHPExcel->getSheet(0);//取得excel工作sheet;
$highestRow=$sheet->getHighestRow();//取得总行数
$highestColumn=$sheet->getHighestColumn();//取得总列数
for($i=2;$i<=$highestRow;$i++){
$data['数据库字段名']=$objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue();//ABCD.....就是excel对应的ABCDEF......
$data['数据库字段名']=$objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();//ABCD.....就是excel对应的ABCDEF......
$data['数据库字段名']=$objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();//ABCD.....就是excel对应的ABCDEF......
$data['数据库字段名']=$objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();//ABCD.....就是excel对应的ABCDEF......
$data['数据库字段名']=$objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();//ABCD.....就是excel对应的ABCDEF......
$data['数据库字段名']=$objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue();//ABCD.....就是excel对应的ABCDEF......
$data['数据库字段名']=$objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue();//ABCD.....就是excel对应的ABCDEF......
M('Users')->add($data);//thinkphp的存储方法(具体你用什么框架或者原生代码,自己去insert,数据格式自己构造)
}