使用phpExcel向mysql数据库导入excel
使用phpExcel向mysql数据库导入excel
from:http://blog.163.com/dustye_l/blog/static/172439513201242491016834/
使用当前最新版本phpExcel,版本号为 1.7.7
1。提交excel文件的页面:
..........
<form enctype="multipart/form-data" method="post" id="form" action="addata.php">
<span>选择需导入的明细表:</span><br />
<input type="file" name="file" /><br />
<input type="submit" value="submit" name="submit" />
</form>
..........
2。处理excel文件的页面(addata.php):
<?php
//判断文件类型,如果不是"xls"或者"xlsx",则退出
if ( $_FILES["file"]["type"] == "application/vnd.ms-excel" ){
$inputFileType = 'Excel5';
}
elseif ( $_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ){
$inputFileType = 'Excel2007';
}
else {
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Invalid file type";
exit();
}
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
exit();
}
$inputFileName = "uploadData/" . $_FILES["file"]["name"];
if (file_exists($inputFileName))
{
//echo $_FILES["file"]["name"] . " already exists. <br />";
unlink($inputFileName); //如果服务器上存在同名文件,则删除
}
else
{
}
move_uploaded_file($_FILES["file"]["tmp_name"], $inputFileName);
echo "Stored in: " . $inputFileName;
//连接数据库
include_once 'conn.php';
//导入phpExcel
include_once 'Classes/PHPExcel/IOFactory.php';
//设置php服务器可用内存,上传较大文件时可能会用到
ini_set('memory_limit', '1024M');
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$WorksheetInfo = $objReader->listWorksheetInfo($inputFileName);
//读取文件最大行数、列数,偶尔会用到。
$maxRows = $WorksheetInfo[0]['totalRows'];
$maxColumn = $WorksheetInfo[0]['totalColumns'];
//列数可用于粗略判断所上传文件是否符合模板要求
//设置只读,可取消类似"3.08E-05"之类自动转换的数据格式,避免写库失败
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inputFileName);
$sheetData = $objPHPExcel->getSheet(0)->toArray(null,true,true,true);
//excel2003文件,可使用'$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);'
//excel2007文件使用"getActiveSheet()"方法时会提示出错:对non-object使用了"toArray"方法。
//才疏学浅,原因未明。。。
//获取表头,并判断是否符合格式
$keywords = $sheetData[1];
$warning = '上传文件格式不正确,请修改后重新上传!<br />';
$columns = array ( 'A', 'B', 'C', 'D', 'E', 'F', 'G' );
$keysInFile = array ( 'KEY1', 'KEY2', 'KEY3', 'KEY4', 'KEY5', 'KEY6', 'KEY7' );
foreach( $columns as $keyIndex => $columnIndex ){
if ( $keywords[$columnIndex] != $keysInFile[$keyIndex] ){
echo $warning . $columnIndex . '列应为' . $keysInFile[$keyIndex] . ',而非' . $keywords[$columnIndex];
exit();
}
}
//数据库字段
$keywords = array ( 'key1', 'key2', 'key3', 'key4', 'key5', 'key6', 'key7' );
//设置数据库字符集
mysql_query("set names utf8");
foreach ( $sheetData as $key => $words ){
if ( $key != 1 ){
//忽略表头
$query = "insert into fcopy (" . implode( $keywords, "," ) . ") values ('" . implode ( $words, "','" ) . "')";
if ( ! ($result = mysql_query ( $query ) ) ){
echo '第' . $key . '行数据导入错误' . mysql_error();
exit();
}
}
else {
}
}
echo '<br />数据导入完毕。<br />';
?>
使用phpExcel向mysql数据库导入excel的更多相关文章
- 向MySql数据库导入excel表数据
最近要开发一个小的答题系统,如果题目人工录入那确实很麻烦.所以想到是不是可以从用一些现有数据格式的文件导入数据.在网上查了一下,看到有关于将excel的数据导入到mysql的方法.所以将题库数据整理成 ...
- MySQL批量导入Excel数据
MySQL批量导入Excel数据 1.确定需要导入数据的表名称以及字段,然后在新建的Excel表中,按照表字段正确排序:(注:(Excel文件的名称最好和数据库的名称一致,sheet表的名字最好和表名 ...
- Java实现MySQL数据库导入
距离上班还有一段时间.现在总结一下如何使用Java语言实现MySQL数据库导入: 首先新建名为test的数据库: 其次执行下面Java代码: import java.io.File; import j ...
- MYSQL数据库导入导出(可以跨平台)
MYSQL数据库导入导出.sql文件 转载地址:http://www.cnblogs.com/cnkenny/archive/2009/04/22/1441297.html 本人总结:直接复制数据库, ...
- Mysql数据库导入命令Source详解
Mysql数据库导入命令Source详解 几个常用用例: 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u root -p dat ...
- Mysql 数据库导入及导出
Mysql 数据库导入及导出 数据库导出: 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u root -p dataname & ...
- mysql 数据库导入数据报错MySQL server has gone away解决办法
mysql 数据库导入数据报错MySQL server has gone away解决办法: 进入数据库执行以下命令即可: set global wait_timeout = 2880000; set ...
- MySQL数据库导入到SQL Server
EXEC master.dbo.sp_addlinkedserver @server = N'MYSQL2', @srvproduct=N'mySQL', @provider=N'MSDASQL', ...
- MySQL批量导入Excel、txt数据
MySQL批量导入Excel.txt数据 我想Excel是当今最大众化的批量数据管理软件了吧,所以我们会经常涉及到将Excel中数据导入到MySQL中的工作.网上有一些关于直接将Excel导入MySQ ...
随机推荐
- UILabel 自适应大小
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStylealloc]init]; paragraphStyle.lineB ...
- mysql_connect v/s mysql_pconnect
原文:mysql_connect v/s mysql_pconnect 译文:mysql_connect v/s mysql_pconnect 译者:dwqs 当需要使用PHP连接MySQL数据库的时 ...
- nodejs 5.2.0文档自翻译——Path模块
模块方法概览 Path path.basename(p[, ext]) path.delimiter path.dirname(p) path.extname(p) path.format(pathO ...
- SRM 501 DIV1 500pt(DP)
题目简述 给定一个长度为n的序列,每个数值的范围为[-1,40],-1可以替换成0~40之间的数,要求你求出符合以下条件的序列有多少个? 1.每个数都是0~40之间的数 2.对于每一个数A[i],都需 ...
- 你想成为优秀的Java程序员吗?
Java是全世界最受欢迎的3大编程语言之一,它可以开发出许多实用的WEB应用程序和桌面应用程序,更重要的一点,Java是跨平台的语言——编写一次,可以再任何地方运行.另外,Java也很容易入门,如果你 ...
- 关于scrollTop的那些事
大家在实际项目中,应该是要经常用到scrollTop的,它表示的是可视窗口距离页面顶部的距离,这个scrollTop是可读写的,所以可以用来做页面滚动. 但是大家或多或少遇到一些浏览器兼容问题,为什么 ...
- Web Service学习之八:Soap消息详解
一.区别概念 WSDL是网络服务描述语言,是XML文档:它包含一系列描述某个web service的定义或者说是规则.尤其是定义了传输Sope消息的结构 Soap:简单对象访问协议,是交换数据的一种协 ...
- Delphi实例-IdTCPServer和IdTCPClient的使用(支持文件发送)
相关资料: http://blog.csdn.net/earbao/article/details/46514313 结果注意: 1.Use IdContext.IdGlobal 这两个单元2.不能使 ...
- display:none;与visibility:hidden;的区别
visibility:隐藏对应的元素但不挤占该元素原来的空间.display:隐藏对应的元素并且挤占该元素原来的空间. 下面来看visibility和dispaly的一些参数 visibility用来 ...
- codeforces 651B Beautiful Paintings
B. Beautiful Paintings time limit per test 1 second memory limit per test 256 megabytes input standa ...