php Excel导出id
<form action="{:U('Index/files')}" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"/>
<br/>
<input type="submit" name="submit" value="Submit"/>
</form>
public function files(){
$filename = $_FILES['file']['name'];
$ext = preg_split("/\./", $filename);
$ext = strtolower($ext[1]);
/*
* 获取文件后缀名
*/
$allowed_types = array("xls", "xlsx");
$filePath = "./Public/excel/" . $_FILES["file"]["name"];
// print_r($filePath);die;
if (!in_array($ext, $allowed_types)) {
echo "File type is wrong!";
die;
}
// else if (file_exists($filePath)) {
// echo "A file with this name already exists!";
// die;
// }
else {
move_uploaded_file($_FILES["file"]["tmp_name"], $filePath);
}
/**
* @param $val
* @return string
* 检查文件名是否符合要求,如果符合,就保存到指定路径。如果不符合,报错。
*/
// import("Org.Util.PHPExcel");
require_once "./ThinkPHP/Library/Org/Util/PHPExcel/Classes/PHPExcel.php";
//$filePath=$_FILES["file"]["tmp_name"];
//sleep(50);
$PHPExcel = new \PHPExcel();
//默认用excel2007读取excel,若格式不对,则用之前的版本进行读取
$PHPReader = new \PHPExcel_Reader_Excel2007();
if (!$PHPReader->canRead($filePath)) {
$PHPReader = new \PHPExcel_Reader_Excel5();
if (!$PHPReader->canRead($filePath)) {
return $this->error(null, "no file");
}
}
$PHPExcel = $PHPReader->load($filePath);
$sheetCount = $PHPExcel->getSheetCount();
$sheetNames = $PHPExcel->getSheetNames();
//var_dump($sheetNames);
//die;
/**读取excel文件中有多少个sheet*/
$objExcel = array();
for ($SheetID = 0; $SheetID < $sheetCount; $SheetID++) {
/**读取excel文件中的工作表*/
$name = $sheetNames[$SheetID];
$currentSheet = $PHPExcel->getSheetByName($name);
$name = iconv("utf-8", "gb2312", $name);
/**取得最大的列号*/
$allColumn = $currentSheet->getHighestColumn();
/**取得一共有多少行*/
$allRow = $currentSheet->getHighestRow();
for ($currentRow = 1; $currentRow <= $allRow; $currentRow++) {
/**从第A列开始输出*/
for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {
$val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65, $currentRow)->getValue();
$val = iconv("utf-8", "gb2312", $val);
$objExcel[$name][$currentRow - 1][ord($currentColumn) - 65] = $val;
//编码需要转换成gb2312
/*
$val = urlencode($val);
$objExcel[$name][$currentRow - 1][ord($currentColumn) - 65] = urldecode($val);
*/
}
}
}
unlink($filePath);
/*
* $objExcel = json_encode($objExcel);
* $objExcel = urldecode($objExcel);
* 读取文件中的内容,因为json_encode()的参数必须是utf-8编码。为了保证汉字输出的结果,这里先将数组中的内容用urlencode进行编码,
* 在被json_encode()编码之后,再用urldecode解码。
*/
//return $objExcel;
// print_r($objExcel);
foreach ($objExcel as $k=>$v){
//取出里面的id拼接成新的一维数组
$result = array_reduce($v, 'array_merge', array());
//过滤掉里面的空值取出id
$id = array_filter($result);
}
}
php Excel导出id的更多相关文章
- [moka同学笔记]PHPexcel之excel导出和导入
原案例来自http://www.sucaihuo.com/有修改 1.目录结构(文件不用解释,应该都可以看得懂,直接看代码)
- TP5.0源生Excel导出
PHPExcel类在TP5里边并不能很好的兼容,使用起来很麻烦. 不像是tp3.2那样直接import()加进来就能new,因为它里边的命名空间找不到.总是说undefined class. 如果是使 ...
- 用SpringMvc实现Excel导出功能
以前只知道用poi导出Excel,最近用了SpringMvc的Excel导出功能,结合jxl和poi实现,的确比只用Poi好,两种实现方式如下: 一.结合jxl实现: 1.引入jxl的所需jar包: ...
- 利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能
我准备在项目中实现该功能之前,google发现大部分代码都是利用一般处理程序HttpHandler实现的服务器端数据的Excel导出,但是这样存在的问题是ashx读取的数据一般都是数据库中视图的数据, ...
- c#关于EXCEL导出数据库的做法
using System;using System.Diagnostics;using System.Collections;using System.Data;using System.Web;us ...
- 自定义分页Gridview中Excel导出
先上图,如图所示导出所有查询出的数据 用的是AspNetPager分页控件,这个导出方法,不受分页和gridview列中数据的约束,可以导出您想导出的数据 首先前台页面代码,lblink即为导出exc ...
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- excel导出使用get请求参数过长问题
遇到的问题: excel导出功能时,使用的是window.location.href=url也就是get请求.当传入参数过长的时候就报了414,地址过长的错误. 解决思路: 将get请求换为post请 ...
- SpringBoot加Poi仿照EasyPoi实现Excel导出
POI提供API给Java程序对Microsoft Office格式档案读和写的功能,详细功能可以直接查阅API,因为使用EasyPoi过程中总是缺少依赖,没有搞明白到底是什么坑,索性自己写一个简单工 ...
随机推荐
- python中关于is,=和==的区别
在Python中 '='相当于赋值 '=='相当于等号两边的值相同 is则是表示两边的id,也就是内存地址相同
- Expedition
Expedition 给出n+1个整点\(\{x_i\}\)(保证递增排序),一个司机带着初始油量p,从\(x_{n+1}\)出发,每行驶一个单位长度消耗一个油量,其中\(x_1\sim x_n\)为 ...
- leetcode-164周赛-1267-统计参与通信的服务器
题目描述: 自己的提交: class Solution: def countServers(self, grid: List[List[int]]) -> int: from collectio ...
- Spring AOP 总结
AOP的基础是Java动态代理 Java中代理的实现一般分为三种:JDK静态代理.JDK动态代理以及CGLIB动态代理. 静态代理: 代理类与被代理类实现同一个接口,在代理类中持有一个被代理对象的引用 ...
- DNS稳定保障系列1--服务双保障“辅助DNS”产品介绍
背景 2016 年 10 月 21 日,DNS 服务商 dyn 的服务器遭遇黑客大流量的 ddos 攻击,使得美国大量互联网公司如 twitter,github等都出现解析失败,无法提供服务.如下图可 ...
- linux IPC socket(2)
使用bind来关联地址和套接字 #include <sys/types.h> #include <sys/socket.h> int bind(int sockfd, cons ...
- Android中的onWindowFocusChanged()方法详解
Android中获取手机屏幕的高度和宽度,我们知道在onCreate方法中获取到的值都是为0的,有人说可以在onClick方法中获取值,这个也是个方法 ,但在onWindowFocusChanged方 ...
- spring boot基于DRUID数据源密码加密及数据源监控实现
前言 随着需求和技术的日益革新,spring boot框架是越来越流行,她也越来越多地出现在我们的项目中,当然最主要的原因还是因为spring boot构建项目实在是太爽了,构建方便,开发简单,而且效 ...
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- 汇编检测OD代码
repnz指令说明:重复执行其后面的指令,CX或ECX存放最多比较次数,DI或EDI存放查找表首地址,AL或AX或EAX存放想查找的内容.当(CX或ECX)= 0 或 ZF=1 退出重复,否则,(CX ...