tp3.2.3运用phpexcel将excel文件导入mysql数据库
1,下载PHPExcel
2,配置将下载好的PHPExcel文件与PHPExcel.php 放到thinkphp 根目录 include/Library/Org/Util/下面
3,同时将PHPExcel.php 改名为 PHPExcel.class.php
以上是将PHPexcel扩展添加到tp里面(本人tp版本为3.2.3) 4,html代码
tp标签
<!-- $Id: brand_list.htm 15898 2009-05-04 07:25:41Z liuhui $ -->
<!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>
<title>零件管理</title>
<meta name="robots" content="noindex, nofollow">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="__PUBLIC__/css/page.css" rel="stylesheet" type="text/css" />
<link href="__PUBLIC__/styles/general.css" rel="stylesheet" type="text/css" />
<link href="__PUBLIC__/styles/main.css" rel="stylesheet" type="text/css" />
<link href="__PUBLIC__/css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="__PUBLIC__/js/jquery.js"></script>
</head>
<body>
<form method="post" action="" name="theForm" id="uploadForm" enctype="multipart/form-data">
<input type="file" class="se2" name="file" id="file" size="45" onchange="checkField(this.value)" style="height: 30px; width: 300px;"/>
<label for="f_file">
<input class="se1" type="button" value="导入" />
</label>
</form>
</body>
</html>
<script>
function checkField(val)
{
UpladFile();
changev();
}
function UpladFile() {
var fileObj = document.getElementById("file").files[0]; // 获取文件对象
var FileController = "__URL__/doleadin"; // 接收上传文件的后台地址
// FormData 对象
var form = new FormData();
form.append("author", "hooyes"); // 可以增加表单数据
form.append("file", fileObj); // 文件对象
// XMLHttpRequest 对象
var xhr = new XMLHttpRequest();
xhr.open("post", FileController, true);
xhr.onload = function () {
alert('上传完成!');
};
xhr.send(form);
}
function changev(){
$('#file').attr('value','');
}
</script> 5,tp后台接受并处理上传文件代码
//处理文件上传 并导入mysql
public function doleadin()
{
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('xls', 'xlsx');// 设置附件上传类
$upload->savePath = '/'; // 设置附件上传目录
// 上传文件
$info = $upload->uploadOne($_FILES['file']);
$filename = './Uploads/'.$info['savepath'].$info['savename'];
$exts = $info['ext']; if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功
$this->import_excel($filename, $exts);
}
} /**
* 导入excel文件
* @param string $file excel文件路径
* @return array excel文件内容数组
*/
public function import_excel($filename, $exts='xls')
{
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.IOFactory");
//创建PHPExcel对象,注意,不能少了\
$PHPExcel=new \PHPExcel();
//如果excel文件后缀名为.xls,导入这个类
if($exts == 'xls'){
import("Org.Util.PHPExcel.Reader.Excel5");
$PHPReader=new \PHPExcel_Reader_Excel5();
}else if($exts == 'xlsx'){
import("Org.Util.PHPExcel.Reader.Excel2007");
$PHPReader=new \PHPExcel_Reader_Excel2007();
} //载入文件
$PHPExcel=$PHPReader->load($filename);
//获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
$currentSheet=$PHPExcel->getSheet(0);
//获取总列数
$allColumn=$currentSheet->getHighestColumn();
//获取总行数
$allRow=$currentSheet->getHighestRow();
//循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
$data = array();
for($rowIndex=1;$rowIndex<=$allRow;$rowIndex++){ //循环读取每个单元格的内容。注意行从1开始,列从A开始
for($colIndex='A';$colIndex<=$allColumn;$colIndex++){
$addr = $colIndex.$rowIndex;
$cell = $currentSheet->getCell($addr)->getValue();
if($cell instanceof PHPExcel_RichText){ //富文本转换字符串
$cell = $cell->__toString();
}
$data[$rowIndex][$colIndex] = $cell;
}
}
if(is_file($filename)){
unlink($filename);
}
$this->save_import($data);
} //保存数据到数据库
public function save_import($data)
{
//零件配置表
$obj_dlaccess=new \Model\Dl_accessModel();
//零件系列表
$obj_info = new \Model\Dl_infoModel();
//城市MOdel
$city_info = new \Model\CityModel();
$result_msg = array(); foreach ($data as $k=>$v){
// $v['C'] = (String)$data[$k]['C']; if($k >= 2){
//$v['C'] = (String)$data[$k]['C']; $data = '';
//系列id
$info_name = (String)htmlspecialchars(trim($v['B']));
$info_id = $obj_info->file_exist($info_name);
if($info_id){
$data['info_id'] = $info_id;
$data['access_name'] = htmlspecialchars(trim($v['C']));
$city_name = htmlspecialchars(trim($v['D']));
$data['city_id'] = $city_info->city_id($city_name);
$data['access_mark'] = htmlspecialchars(trim($v['E']));
$access_num = (int)htmlspecialchars(trim($v['F']));
if(is_int($access_num)){
$data['access_num'] = $access_num;
$access_price = $v['G'];
$arr = explode('/',$access_price);
if(is_array($arr)){
$data['access_price']=$arr[0];
if($arr[1]=='元'){
$data['price_stu'] = 1;
}else{
$data['price_stu'] = 2;
}
$data['access_dealer'] = htmlspecialchars(trim($v['H']));
$data['access_phone'] = htmlspecialchars(trim($v['I'])); $arr1 = htmlspecialchars(trim($v['J']));
$arr1 = explode('/',$arr1);
if(is_array($arr1)){ $data['inventory']=$arr[0];
if($arr[1]=='个'){
$data['inventory_stu'] = 1;
}else{
$data['inventory_stu'] = 2;
}
//查询是否已存在该零件
$return = $obj_dlaccess->filed_exsit($data); if(empty($return)){
$data['up_time'] = time();
$result = $obj_dlaccess->to_add($data);
if($result){
array_push($result_msg,'第'.($k-1).'条导入成功!<br/>');
}
}else{
array_push($result_msg,'第'.($k-1).'条导入失败!<br/>');
}
} }else{
return 'excel格式错误';
}
}else{
return 'excel格式错误';
}
}else{
return 'excel格式错误';
}
}
}
// return $result_msg;
}
注意:如遇到例如:
object(PHPExcel_RichText)[98]
private '_richTextElements' =>
array
0 =>
object(PHPExcel_RichText_TextElement)[99]
private '_text' => string '96018270' (length=8)
1 =>
object(PHPExcel_RichText_Run)[608]
private '_font' =>
object(PHPExcel_Style_Font)[164]
...
private '_text' (PHPExcel_RichText_TextElement) => string '/96018290' (length=9)
此类型的数据 则将该数据 强制转换为(string)string字符串即可!
tp3.2.3运用phpexcel将excel文件导入mysql数据库的更多相关文章
- 将Excel数据导入mysql数据库的几种方法
将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...
- excel文件导入mysql
在数据处理的过程中,常常要把windows下的excel文件导入linux下的mysql.这其中会出现一些问题. 1.首先,要在mysql中建表.命令最好存在记事本中,可以随时修改,随时执行 crea ...
- 【MySQL笔记】Excel数据导入Mysql数据库的实现方法——Navicat
很多公司尤其有点年头的公司,财务业务部门的各种表单都是excel来做的表格,随着互联网的发展各种业务流程都电子化流程化了,再在茫茫多的文档中去查找某一个年份月份的报告是件相当枯燥的事,所以都在想办法将 ...
- kettle 如何将excel文件导入oracle数据库?
1.情景展示 昨日,有一批数据需要导入数据库,但是,plsql不知为何不能导了,于是,我选择使用kettle完成excel数据的导入. 2.准备工作 将对应的数据库所需的jar包拷贝至其lib目录 ...
- Excel表格导入Mysql数据库,一行存入多条数据的前后台完整实现思路(使用mybatis框架)
现在有一张Excel表格: 存入数据库时需要这样存放: 现在需要将Excel表格做处理,将每一行拆分成多条数据存入数据库. 1.首先在前台jsp页面画一个按钮:,加入点击事件: <td styl ...
- excel数据导入mySql数据库
1.将excel数据保存好 2.打开数据库,在表上点击右键,选择导入向导 3.点击下图中红色部门,点击下一步 4.选择excel文件的位置,下方的表空间内,会出现excel中的sheet页,选择要导入 ...
- 如何将frm文件导入MySql数据库
只要在mysql的安装文件中找到data文件夹,然后在里面建立一个文件夹,比如test.这个test其实就对应着数据库的名称,所以,你想要起什么样的数据库名称就把文件夹起什么名字. 然后把.frm文件 ...
- 本地sql文件导入mysql数据库
mysql中配置my.ini interactive_timeout = 120 wait_timeout = 120 max_allowed_packet = 32M 导入sql运行命令 sourc ...
- xlrd(excel导入mysql数据库)
一.xlrd模块: python 对 excel 文件进行读操作 1.下载xlrd 并安装 http://pypi.python.org/pypi/xlrd wget https://pypi.pyt ...
随机推荐
- oninput和onpropertychange实时监听输入框值的变化
oninput和onpropertychange实时监听输入框值的变化 传统监听输入框的做法就是使用keyup.keydown.keypress,或者change事件来实现,但keyup.keydow ...
- poj 1932 XYZZY(spfa最长路+判断正环+floyd求传递闭包)
XYZZY Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 4154 Accepted: 1185 Description ...
- (三)Lua脚本语言入门(数组)
又要找工作了,变的忧虑了,唯有学习才让内心变得踏实,今天玩了一下午的王者荣耀,正事都忘了...... 如果认为所谓的毅力是每分每秒的“艰苦忍耐”式的奋斗,那这是一种很不足的心理状态.毅力是一种习惯,毅 ...
- WCF来传递DataTable的Bug
Wcf,客户端与服务器之间在传递DataTable(由于数据库字段不确定暂时用DataTable而不是用实体对象传递)时,发现有的DataTable可以直接传递没有问题 解决方案: DataTable ...
- 搭建Hadoop的HA高可用架构(超详细步骤+已验证)
一.集群的规划 Zookeeper集群: 192.168.182.12 (bigdata12)192.168.182.13 (bigdata13)192.168.182.14 (bigdata14) ...
- Codeforces round 1100
Div 2 532 我对交互一无所知 只能寄期望与NOI和省选不出交互吧... E 这个题,真的是耻辱... 其实非常简单,就是二分+判环... 那么就直接二分答案+拓扑排序即可... (我居然在考试 ...
- BZOJ3786: 星系探索 Splay+DFS序
题目大意:给你一个树,支持三种操作,子树加,点到根的路径和,改变某一个点的父亲. 分析: 看起来像一个大LCT,但是很显然,LCT做子树加我不太会啊... 那么,考虑更换一个点的父亲这个操作很有意思, ...
- Mac 如何显示隐藏文件夹并设置快捷键
通过在终端运行命令可以控制隐藏文件是否显示: 输入defaults write com.apple.finder AppleShowAllFiles NO 就不显示, 输入defaults write ...
- 20155313 杨瀚 《网络对抗技术》实验一 PC平台逆向破解(5)M
exp1 PC平台逆向破解(5)M 一.实验内容 1.手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 2.利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发 ...
- WPF的Style的TargetType不同写法的异同
原文:WPF的Style的TargetType不同写法的异同 <Style TargetType="TextBlock"> <Setter Property=&q ...