介绍:
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处理表格的更多相关文章

  1. PhpSpreadsheet处理表格2

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  2. phpspreadsheet导出数据到Excel

    之前我们使用PHP导出Excel数据时使用的是PHPExcel库,但是phpoffice已经官方宣布PHPExcel已经被废弃不在维护,推荐使用phpspreadsheet,如下图所示 我们可以通过c ...

  3. PHP7 学习笔记(十二)PHPExcel vs PhpSpreadsheet and PHP_XLSXWriter

    前言 PhpSpreadsheet是PHPExcel的下一个版本. 它打破了兼容性,极大地提高了代码库的质量(命名空间,PSR合规性,使用最新的PHP语言功能等).由于所有努力都转移到了PhpSpre ...

  4. php+phpspreadsheet读取Excel数据存入mysql

    先生成Excel模板,然后导入Excel数据到mysql,每条数据对应图片上传到阿里云 <?php /** * Created by PhpStorm. * User: Administrato ...

  5. 详解PhpSpreadsheet设置单元格

    PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式.图片.日期.函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到. 在 ...

  6. 使用PhpSpreadsheet将Excel导入到MySQL数据库

    本文以导入学生成绩表为例,给大家讲解使用PhpSpreadsheet将Excel导入的MySQL数据库. 准备 首先我们需要准备一张MySQL表,表名t_student,表结构如下: CREATE T ...

  7. TP5使用Composer安装phpoffice/phpspreadsheet,导出Excel文件

    1.composer安装: composer require phpoffice/phpspreadsheet 2.点击导出按钮,触发控制器里面的方法 wdjzdc() 3. 在控制中引入 use P ...

  8. phpspreadsheet开发手记

    坑安装简单示例通过模板来生成文件释放内存单元格根据索引获取英文列设置值合并单元格居中显示宽度设置批量设置单元格格式直接输出下载自动计算列宽函数formula单元格变可点击的超链 PhpSpreadsh ...

  9. PhpSpreadsheet如何读取excel文件

    PhpSpreadsheet如何读取excel文件 一.总结 一句话总结:万能的百度,直接搜代码就好,绝对有,毕竟github上面4000+的关注,说明很多人用了这个,使用照着demo倒是异常简单 二 ...

随机推荐

  1. docker镜像无法下载或者下载缓慢

    解决docker镜像无法下载的问题 2015年10月02日 16:01:05 阅读数:20776 克服跨洋网络延迟,使用Docker Hub Mirror加速Docker官方镜像下载 http://c ...

  2. matrix矩阵变换参数图形化详解

  3. phxpaxos遇到反复拉取checkpoint但是反复失败的问题,给其它节点造成压力

    原因: 接收checkpoint时与接收普通message共用IOLoop中的队列,当遇到队列满或者超内存时,会造成checkpoint的包随机丢失的问题 解决办法: 遇到checkpoint时不丢弃 ...

  4. HTTP 学习心得

    一.什么是HTTP? 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的 ...

  5. 初学python---排序

    1.永久性排序 sort() a = [12,45,1,25,3] a.sort() print(a)  ----[1, 3, 12, 25, 45] 2.临时排序 sorted() a = [12, ...

  6. 安装oracle [INS-32025] 所选安装与指定 Oracle 主目录中已安装的软件冲突” 的问题

    删除C:\Program Files (x86)\Oracle\Inventory\下的Oracle文件夹即可解决问题

  7. ASP.NET结合Redis实现分布式缓存

    最近一个项目ASP.NET+MySQL 有的网页打开初始化的查询需要10秒甚至更久,用户体验极差,而且并发量变大的时候网站容易崩溃 后来想了两种解决方案都不是太满意 1.数据库里建一张缓存表,后台作业 ...

  8. Apache Flink 数据流编程模型

    抽象等级(Levels of Abstraction) Flink提供不同级别的抽象来开发流/批处理应用程序. Statefule Stream Processing: 是最低级别(底层)的抽象,只提 ...

  9. AS3语法和UNITY C#语法的异同

      AS3 UNITY Sprite a = new Sprite(); trace(a.paent); 此时a.parent为null,还未AddChild到屏幕上, 一般用这个来判断在不在屏幕上 ...

  10. 提交一个变量或数组到另一个jsp页面

        注意一:提交一个变量到另一个jsp页面,用hidden的input 另一个页面用request.getParameter();获取 注意二:提交一个数组到另一个页面,可以用相同的input的n ...