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倒是异常简单 二 ...
随机推荐
- [转载]EF或LINQ 查询时使用IN并且根据列表自定义排序方法
原文地址:EF或LINQ 查询时使用IN并且根据列表自定义排序方法作者:李明川 EF和LINQ改变了原有的手写SQL时期的一些编码方法,并且增强了各数据库之间的移植性简化了开发时的代码量和难度,由于很 ...
- 20175213 2018-2019-2 《Java程序设计》第9周学习总结
教材学习内容总结 根据课本的介绍下载了MySQL和Navicat for MySQL并成功对后者进行破解: 操作方法可分为三步: 一.配置程序--让我们程序能找到数据库的驱动jar包 1.把.jar文 ...
- cuts
1.cuts .replacename.fasta..replacename.fasta..replacename.fasta.cut.list awk 'system("mv Dme49. ...
- vue响应式原理
vue的响应式,数据模型仅仅是普通的Javascript对象.当你修改它们时,视图会进行更新 那么如何追踪变化: 当把普通的js对象传给vue实例的data选项,Vue将遍历此对象的所有属性,并使用O ...
- oracle 按表数据新增一行
在功能实现时,能尽量用一个sql语句直接实现业务逻辑的话,就不要去写C#代码,便于维护. 以下sql的逻辑是:给明细表新增一条数据,前提是传入的债券代码存在与债券表,否则不新增.此sql返回受影响行数 ...
- Find out where to contain the smartforms
Go to table E071 and give smarforms name and it will give the transport req for that. Run SE03, choo ...
- 010Edit手写PE
前言PE结构DOS头IMAGE_DOS_HEADERPE头介绍总大小[248字节]结构体含义标记(4字节)0x4550文件头(20字节)扩展头(224字节)为程序添加ExitProcess函数 前言 ...
- MVC Request生命周期(综合总结)
当用户在浏览器输入一个URL地址后,浏览器会发送一个请求到服务器.这时候在服务器上第一个负责处理请求的是IIS.然后IIS再根据请求的URL扩展名将请求分发给不同的处理程序处理. 流程如下: 当请求一 ...
- gooflow学习笔记
前端jqury脚本实现流程设计,兼容目前主流浏览器 gooflow 默认属性节点只有:id,name,top,left,width,height,type (各个版本不同,属性节点有所增加),但是这些 ...
- AWR不能自动生成快照
尝试手工生成,报错sysaux表空间满. BEGIN DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT (); END; 检查DBA_HIST_SNAPSHOT和dba ...