PhpSpreadsheet处理表格
介绍:
PhpSpreadsheet是PHPExcel的下一个版本。它打破了兼容性,大大提高了代码库质量(命名空间,PSR合规性,最新PHP语言功能的使用等)。
由于所有努力都转移到了PhpSpreadsheet,因此将不再维护PHPExcel。PHPExcel,补丁和新功能的所有贡献都应该针对PhpSpreadsheet开发分支。
前提:TP5项目中已经安装配置好Composer 管理工具包。
安装:
命令 composer require phpoffice/phpspreadsheet
前端上传页面:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>index</title>
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
</head>
<body> <div class="container"> <form action="http://test.tp51.com/index/index/uploadexcel" enctype="multipart/form-data" method="post">
<div class="form-group">
<label for="exampleInputFile">选择文件</label>
<input type="file" id="excelFile" name="file" accept=".csv,.xls,.xlsx">
<p class="help-block">请选择表格文件,支持 csv,xls,xlsx 格式</p>
</div> <div class="form-group">
<label for="columm" class="control-label">选择总列数</label>
<select class="form-control" name="columm" id="columm"><option>A</option><option>B</option><option>C</option><option>D</option><option>E</option><option>F</option><option>G</option><option>H</option><option>I</option><option>J</option><option>K</option><option>L</option><option>M</option><option>N</option></select>
</div> <div class="form-group">
<button type="submit" class="btn btn-default">上传</button>
</div>
</form> </div> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script type="text/javascript">
<!--
$("button[type='submit']").on("click",function(){
var filestr = $("#excelFile").val();
var filemate = getFilemate(filestr);
console.log(filemate);
if (filemate =='xls' || filemate =='xlsx' || filemate =='csv') {
console.log("文件正确");
$("form").submit();
}else{
alert("文件格式不正确");
return false;
}
}); //获取文件格式-后缀
function getFilemate(o){
var index = o.lastIndexOf(".")
if (index==-1) {return false;}
return o.substring(index+1);
}
//-->
</script> </body>
</html>
后端接收处理:
<?php
namespace app\index\controller; use think\Db;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx; class Index
{
public function index(){
return view();
} //上传表格文件
public function uploadexcel(){
$input_columm = input('post.columm/s');
$file = request()->file("file");
$info = $file->validate(['size'=>5242880,'ext'=>'csv,xls,xlsx'])->rule("date")->move("./uploads/DMH",$this->setupname());
if ($info) {
//上传成功,处理表格文件
$data = array();
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader(ucfirst($info->getExtension()));
$spreadsheet = $reader->load($info->getPathname());
$sheet = $spreadsheet->getSheet(0); // 读取第一個工作表
$highest_row = $sheet->getHighestRow(); // 取得总行数
//$highest_columm = $sheet->getHighestColumn(); // 取得总列数
$highest_columm = $input_columm ? $input_columm : $sheet->getHighestColumn(); // 总列数,根据实际情况修改
for ($row = 1; $row <= $highest_row; $row++){ //行号从1开始
$arr = array();
for ($column = 'A'; $column <= $highest_columm; $column++){ //列数是以A列开始
$str = $sheet->getCell($column . $row)->getValue();
array_push($arr,$str);
}
if (array_filter($arr)) {
$data[$row] = array_filter($arr);
}
}
//var_dump($data);
return view('excel',['data'=>$data]);
} else {
echo $file->getError();
}
} //导出excel
public function outexcel(){
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$writer = new Xlsx($spreadsheet);
$writer->save('hello world2.xlsx');
} }
PhpSpreadsheet处理表格的更多相关文章
- PhpSpreadsheet处理表格2
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- phpspreadsheet导出数据到Excel
之前我们使用PHP导出Excel数据时使用的是PHPExcel库,但是phpoffice已经官方宣布PHPExcel已经被废弃不在维护,推荐使用phpspreadsheet,如下图所示 我们可以通过c ...
- PHP7 学习笔记(十二)PHPExcel vs PhpSpreadsheet and PHP_XLSXWriter
前言 PhpSpreadsheet是PHPExcel的下一个版本. 它打破了兼容性,极大地提高了代码库的质量(命名空间,PSR合规性,使用最新的PHP语言功能等).由于所有努力都转移到了PhpSpre ...
- php+phpspreadsheet读取Excel数据存入mysql
先生成Excel模板,然后导入Excel数据到mysql,每条数据对应图片上传到阿里云 <?php /** * Created by PhpStorm. * User: Administrato ...
- 详解PhpSpreadsheet设置单元格
PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式.图片.日期.函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到. 在 ...
- 使用PhpSpreadsheet将Excel导入到MySQL数据库
本文以导入学生成绩表为例,给大家讲解使用PhpSpreadsheet将Excel导入的MySQL数据库. 准备 首先我们需要准备一张MySQL表,表名t_student,表结构如下: CREATE T ...
- TP5使用Composer安装phpoffice/phpspreadsheet,导出Excel文件
1.composer安装: composer require phpoffice/phpspreadsheet 2.点击导出按钮,触发控制器里面的方法 wdjzdc() 3. 在控制中引入 use P ...
- phpspreadsheet开发手记
坑安装简单示例通过模板来生成文件释放内存单元格根据索引获取英文列设置值合并单元格居中显示宽度设置批量设置单元格格式直接输出下载自动计算列宽函数formula单元格变可点击的超链 PhpSpreadsh ...
- PhpSpreadsheet如何读取excel文件
PhpSpreadsheet如何读取excel文件 一.总结 一句话总结:万能的百度,直接搜代码就好,绝对有,毕竟github上面4000+的关注,说明很多人用了这个,使用照着demo倒是异常简单 二 ...
随机推荐
- keepliave
keepalived的主要功能 1. healthcheck: 检查后端节点是否正常工作 如果发现后端节点异常,就将该异常节点从调度规则中删除: ...
- django restfulwork 源码剖析
概要: 1.restful 规范(建议); 2. django rest framework框架 内容回顾: 1.开发模式; - 普通开发模式(前后端放在一起写) - 前后端分离 好处: 后端一套,前 ...
- session的简单应用
session的作用:服务器端保存信息. 用户登陆后,服务器端保存了 自定义的key:value 如下: if username == 'xxx' and password == 'xxxx': re ...
- Java跨平台的原理
使用Java语言编写应用程序最大的优点在于“一次编译,处处运行”,然而这并不是说所有的Java程序都具有Java跨平台的特性, 事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的. Ja ...
- 腾讯2019年暑期实习生招聘在线笔试技术研究和数据分析方向第二题(python)
def printindex(n,arr): # n = int(input()) # arr = list(map(int,input().split(' '))) li1=[] li2=[] fo ...
- 初学Python:面向对象总结
2019-04-16 Python 3x 一. 面向对象的含义和特性 面向对象是将世界中的具体事物进行抽象,从而能够更好的帮助我们归纳总结,解决复杂问题的一种解决问题的思路. 面向对象的三个特性——封 ...
- go安装依赖包
实例 比如先切换到 $GOPATH 的 src 目录,cd $GOPATH/src,然后按需要下载: git clone --depth 1 https://github.com/golang/too ...
- http 6000端口 chrome ERR_UNSAFE_PORT
参考原因 折腾了半天.chrome的提示真不够意思,还是火狐的提示厉害,知道真相的我眼泪流下来.
- 爬坑记-tomcat 项目启动两次的的解决
项目就启动了两次,程序倒是正常运行,关键我里边写了个while 循环,不能让它启动两次啊 百度了一下,有人说是tomcat server.xml或者tomcat新建服务的时候设置出了问题 ....最终 ...
- mysql 聚集索引和非聚集索引问题(整理)
mysql的聚集索引和非聚集索引 前几天做了一个面试,从优化数据库谈到索引,最后问了我聚集索引和非聚集索引的问题.当时那个叫悔恨啊,平时学习mysql索引这方便的知识,也都看到了这样的字眼,,但总的来 ...