thinkphp 结合phpexcel实现excel导入
控制器文件:

class ExcelAction extends Action {
public function __construct()
{
import('ORG.Util.ExcelToArrary');//导入excelToArray类
} public function index()
{
$this->display();
}
public function add()
{
$tmp_file = $_FILES ['file_stu'] ['tmp_name'];
$file_types = explode ( ".", $_FILES ['file_stu'] ['name'] );
$file_type = $file_types [count ( $file_types ) - ]; /*判别是不是.xls文件,判别是不是excel文件*/
if (strtolower ( $file_type ) != "xlsx" && strtolower ( $file_type ) != "xls")
{
$this->error ( '不是Excel文件,重新上传' );
} /*设置上传路径*/
$savePath = C('UPLOAD_DIR'); /*以时间来命名上传的文件*/
$str = date ( 'Ymdhis' );
$file_name = $str . "." . $file_type; /*是否上传成功*/
if (! copy ( $tmp_file, $savePath . $file_name ))
{
$this->error ( '上传失败' );
}
$ExcelToArrary=new ExcelToArrary();//实例化
$res=$ExcelToArrary->read(C('UPLOAD_DIR').$file_name,"UTF-8",$file_type);//传参,判断office2007还是office2003 foreach ( $res as $k => $v ) //循环excel表
{
$k=$k-;//addAll方法要求数组必须有0索引
$data[$k]['name1'] = $v [];//创建二维数组
$data[$k]['name2'] = $v [];
$data[$k]['name3'] = $v [];
$data[$k]['name4'] = $v [];
}
$kucun=M('kucun');//M方法
$result=$kucun->addAll($data);
if(! $result)
{
$this->error('导入数据库失败');
exit();
}
else
{
$this->success ( '导入成功' );
}
}

定义Excel转换数组类:

class ExcelToArrary {
public function __construct() {
Vendor("Excel.PHPExcel");//引入phpexcel类(注意你自己的路径)
Vendor("Excel.PHPExcel.IOFactory");
}
public function read($filename,$encode,$file_type){
if(strtolower ( $file_type )=='xls')//判断excel表类型为2003还是2007
{
Vendor("Excel.PHPExcel.Reader.Excel5");
$objReader = PHPExcel_IOFactory::createReader('Excel5');
}elseif(strtolower ( $file_type )=='xlsx')
{
Vendor("Excel.PHPExcel.Reader.Excel2007");
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
}
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($filename);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$excelData = array();
for ($row = 1; $row <= $highestRow; $row++) {
for ($col = 0; $col < $highestColumnIndex; $col++) {
$excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
}
}
return $excelData;
}

前台导入页面:

<form method="post" action="Excel/add" enctype="multipart/form-data">
<h3>导入Excel表:</h3><input type="file" name="file_stu" /> <input type="submit" value="导入" />
</form>

注意:在php.ini里面把;extension=php_zip.dll前面的分号去掉;
C('UPLOAD_DIR').$file_name是上传的excel的路径;
thinkphp 结合phpexcel实现excel导入的更多相关文章
- ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
这篇文章主要介绍了ThinkPHP使用PHPExcel实现Excel数据导入导出,非常实用的功能,需要的朋友可以参考下 本文所述实例是使用在Thinkphp的开发框架上,要是使用在其他框架也是同样的方 ...
- 利用phpexcel把excel导入数据库和数据库导出excel实现
<?php ); ini_set(,,,date(,date(,,,date(,,,date(,date(,,,date() ->setCellValue();); $objPHP ...
- thinkphp用phpexcel读取excel,并修改列中的值,再导出excel,带往excel里写入图片
<?php class GetpriceAction extends AdministratorAction { // 文件保存路径 protected $savepath; // 允许上传的文 ...
- Thinkphp 用PHPExcel 导入Excel
搞了个简单的Excel导入, 用的是PHPExcel(百科:用来操作Office Excel文档的一个PHP类库, 基于微软的OpenXML标准和PHP语言) 好, 不说了, 开始吧... 首先得有P ...
- ThinkPHP 3.2.3 使用 PHPExcel 处理 Excel 表格
下载 PHPExcel(https://github.com/PHPOffice/PHPExcel) 把下载的 zip 包解压至 ./ThinkPHP/Library/Vendor 下 一.导入 Ex ...
- ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
前端HTML+JQuery 备注Jquery需要1.x版本,不能用2.x版本 1.引入必要文件及上传input <load file="__PUBLIC__/js/jquery-1. ...
- 使用thinkphp框架实现Excel导入数据库
之前讲过php实现Excel导出数据库的随笔,链接:https://www.cnblogs.com/nuanai/p/6727711.html 之前的项目用到较多的就是Excel导出,现在用到了Exc ...
- tp3.2.3运用phpexcel将excel文件导入mysql数据库
1,下载PHPExcel 2,配置将下载好的PHPExcel文件与PHPExcel.php 放到thinkphp 根目录 include/Library/Org/Util/下面 3,同时将PHPExc ...
- 使用phpExcel实现Excel数据的导入导出(完全步骤)
使用phpExcel实现Excel数据的导入导出(完全步骤) 很多文章都有提到关于使用phpExcel实现Excel数据的导入导出,大部分文章都差不多,或者就是转载的,都会出现一些问题,下面是本人 ...
随机推荐
- Lightoj1002 【搜索】
题意: 两两之间的点的花费就是:从A点到B的一条路上某段的最大权值:给一个起点,求到各起点的最小花费. 思路: 一开始的思路: n不是才500,我先建个图,然后DFS一下,不对,是2500: 如果直接 ...
- 如何实现一个无边框Form的移动和改变大小(二)
接着上文:这里写链接内容 我们来说说一个比较复杂的实现, 效果如图: 注意为了能够凸显没有NC(NotClient)区域,我们额外用了3个panel分别放在窗体的左右和下部.用来模拟客户自己的控件. ...
- WPF Set connectionId threw an exception异常 以及重复dll的问题
1.DataOutputWPF 在显示norlib.Basic.UserConfigControl时 抛出异常 xmlparsingException : WPF Set connectionId t ...
- iOS集成支付宝支付
本文由本人原创发表于博客园,转载请注明出处 http://www.cnblogs.com/wangqw/p/5074907.html 一. 开发前准备 iOS 支付宝SDK下载地址:(内含iOS An ...
- RN初始化项目报错
解决方法:全局删除yarn
- cmd - 命令行窗口中文乱码
问题 在cmd窗口中输入curl www.baidu.com可以看到有中文乱码的现象,这是因为默认使用的是GBK编码.另外,curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在 ...
- ie img 3px bug
ie img 3px bug 日期:2008-11-22 分类:CSS ie img 有 3px 的缝隙也是 ie 的经典 bug 之一,相信已经不陌生了,但还是先看看效果吧(也许你并没有见过): 效 ...
- Codeforces Round #547 (Div. 3) A.Game 23
链接:https://codeforces.com/contest/1141/problem/A 题意: 给n和m,有两种操作:将n×2 或 n×3,求最少的乘法次数由n得到m. 不能得到时为-1. ...
- Count on a tree II SPOJ - COT2 && bzoj1086 王室联邦 && bzoj2589
https://cn.vjudge.net/problem/SPOJ-COT2 这个是树上莫队模版啊.. 树上莫队有两种,第一种就是括号序莫队 设节点i在括号序中首次出现位置为pl[i] 那么路径(i ...
- axios 访问和返回拦截,token处理,返回异常统一处理
在axios文件夹中,index.js添加拦截 访问拦截: import store from '../store' axios.interceptors.request.use( config =& ...