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 ...
随机推荐
- AOP实现拦截对象以及获取切入目标方法和注解
AOP实现拦截对象以及获取切入目标方法和注解 一.JoinPoint是什么? AspectJ使用org.aspectj.lang.JoinPoint接口表示目标类连接点对象,如果是环绕增强时,使用 o ...
- JAVA springmvc+spring+mybatis整合
一.springmvc---controller spring----service mybatiss---dao pring(包括springmvc).mybatis.mybatis-sprin ...
- jsp操作javabean
一:介绍 javabean: java语言编写的一个可重用的组件. 狭义上来说就是我们编写的一个普通的java类,例如:User... javabean规范: 1.必须是一个公共具体的类:public ...
- 在ROS中使用QT界面
在终端可以直接用catkin_create_qt_pkg命令创建带Qt界面的ROS package,再按照前面说的方法导入到Qt即可 这里参考的是qt_createTutorialsQt App Te ...
- 感言&2
我写下这些,不是为了向谁诉说我的苦难,我家庭的苦难,而只是想说,朋友,当你们能够坐在星巴克里点杯咖啡打开Macbook刷知乎,思考“人为什么努力”这样的问题时有无数个像我一样出身的孩子在拼命,不因为什 ...
- 20155204 王昊《网络对抗技术》EXP1 PC平台逆向破解
20155204 王昊<网络对抗技术>EXP1 PC平台逆向破解 (一)实验内容 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即"空指令&qu ...
- 汇编 循环位移指令 ROL, 循环位移指令 ROR
知识点: 循环位移指令 ROL 循环位移指令 ROR 一.循环位移指令 ROL ROR int i=0x77886611;//01110111100010000110011000010001 ...
- Webpack学习-Webpack初识
一.前言 webpack 到底是个什么东西呢,看了一大堆的文档,没一个能看懂的,因为上来就是给个module.exports 然后列一大堆配置,这个干啥,那个干啥,没一点用.但凡要用一个东西,一个东西 ...
- Spring+SpringMVC+MyBatis整合基础篇(三)搭建步骤
作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载. 框架介绍 Spring SpringMVC MyBatis easyUI ...
- Excel读取Word Table元素
Option Explicit Sub Mian() Application.ScreenUpdating = False Application.DisplayAlerts = False Appl ...