<!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>ERP商品代码生成</title>
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<style type="text/css">
.mt16 {margin-top: 12px;}
</style>
</head>
<body> <div class="container">
<div class="row">
<div class="col-lg-6">
<div class="input-group mt16">
<span class="input-group-addon">商品代码</span>
<input type="text" name="scode" class="form-control" placeholder="商品代码,如BM111WY">
</div>
</div>
<div class="col-lg-6">
<div class="input-group mt16">
<span class="input-group-addon">商品名称</span>
<input type="text" name="sname" class="form-control" placeholder="商品名称及商品简称">
</div>
</div>
</div> <div class="row">
<div class="col-lg-6">
<div class="input-group mt16">
<span class="input-group-addon">规格代码</span>
<input type="text" name="specode" class="form-control" placeholder="规格代码,如BM111WY01S">
</div>
</div>
<div class="col-lg-6">
<div class="input-group mt16">
<span class="input-group-addon">规格名称</span>
<input type="text" name="spename" class="form-control" placeholder="规格名称,如XX卫衣 白色 S">
</div>
</div>
</div> <div class="input-group mt16">
<span class="input-group-addon">颜色</span>
<input type="text" name="specolor" class="form-control" placeholder="颜色,以空格隔开,如白色 红色 黑色">
</div> <div class="input-group mt16">
<span class="input-group-addon">颜色对应的编号</span>
<input type="text" name="specolorid" class="form-control" placeholder="颜色编号,以空格隔开,如01 16 05">
</div> <div class="input-group mt16">
<span class="input-group-addon">尺码</span>
<input type="text" name="spesize" class="form-control" placeholder="尺码,以空格隔开,如S M L XL XXL">
</div> <button type="button" class="btn btn-success btn-block mt16">确定提交</button> <table class="table table-bordered mt16">
<thead>
<tr>
<th>商品代码</th>
<th>规格代码</th>
<th>规格名称</th>
<th>商品名称</th>
<th>商品简称</th>
</tr>
</thead>
<tbody>
</tbody>
</table> <div class="text-center mt16">Powered by 李佳,2019.9</div> </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">
var shoparr = []; $(":button").click(function(){
var scode = $("input[name='scode']").val();
var sname = $("input[name='sname']").val();
var specode = $("input[name='specode']").val();
var spename = $("input[name='spename']").val();
var specolor = $("input[name='specolor']").val();
var specolorid = $("input[name='specolorid']").val();
var spesize = $("input[name='spesize']").val(); //颜色数组
var specolorarr = specolor.split(/\s+/g);
//颜色编号数组
var specoloridarr = specolorid.split(/\s+/g);
//尺码数组
var spesizearr = spesize.split(/\s+/g); //清空表格
$("table tbody").empty(); for (var i = 0; i < specolorarr.length; i++) {
for (var j = 0; j < spesizearr.length; j++) {
shoparr.push([scode,specode+specoloridarr[i]+spesizearr[j],spename+" "+specolorarr[i]+spesizearr[j],sname]);
$("table tbody").append("<tr><td>"+scode+"</td><td>"+specode+specoloridarr[i]+spesizearr[j]+"</td><td>"+spename+" "+specolorarr[i]+spesizearr[j]+"</td><td>"+sname+"</td><td>"+sname+"</td></tr>");
}
} if (shoparr.length>1 && $("button").length<2) {
$("table").after("<button type='button' class='btn btn-success btn-block mt16' id='getxls'>下载表格</button>");
}
}); $("body").on('click','#getxls',function(){
DownLoadFile({
url:'{:getHostDomain()}{:addonUrl('arr2xls')}',
data:{sparr:shoparr}
});
}); var DownLoadFile = function (options) {
var config = $.extend(true, { method: 'post' }, options);
var $iframe = $('<iframe id="down-file-iframe" />');
var $form = $('<form target="down-file-iframe" method="' + config.method + '" />');
$form.attr('action', config.url);
for (var key in config.data) {
$form.append('<input type="hidden" name="' + key + '" value="' + config.data[key] + '" />');
}
$iframe.append($form);
$(document.body).append($iframe);
$form[0].submit();
$iframe.remove();
} </script> </body>
</html>

前端提交数组,由于通过AJAX提交返回的只能是字符串,不能流类型,所以这里临时构建一个Iframe,通过iframe提交form,然后删除临时Iframe,实现流文件接收。

这里是在 thinkphp里 引入类

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

处理函数

//由数组生成表格文件
public function arr2xls(){
$sparr = input('post.sparr');
$sparr = explode(',',$sparr);
$sp2arr = array_chunk($sparr,4); //创建表格
//$spreadsheet = new Spreadsheet();
//通过模板生成表格
$inputFileName = ADDON_PATH.'webact/static/SpMoban.xlsx';
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName); $sheet = $spreadsheet->getActiveSheet(); //设置第一行小标题
// $k = 1;
// $sheet->setCellValue('A'.$k, '商品代码(必填)');
// $sheet->setCellValue('B'.$k, '规格代码');
// $sheet->setCellValue('C'.$k, '规格名称');
// $sheet->setCellValue('D'.$k, '商品名称');
// $sheet->setCellValue('E'.$k, '商品简称'); for ($i=0; $i < count($sp2arr); $i++) {
$sheet->setCellValue('A'.($i+2), $sp2arr[$i][0]);
$sheet->setCellValue('B'.($i+2), $sp2arr[$i][1]);
$sheet->setCellValue('C'.($i+2), $sp2arr[$i][2]);
$sheet->setCellValue('D'.($i+2), $sp2arr[$i][3]);
$sheet->setCellValue('E'.($i+2), $sp2arr[$i][3]);
}
//设置列宽
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setAutoSize(true); header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");//告诉浏览器输出07Excel文件
header("Content-Disposition: attachment;filename=".$sp2arr[0][0].".xlsx");//告诉浏览器输出浏览器名称
header("Cache-Control: max-age=0");//禁止缓存 $writer = new Xlsx($spreadsheet);
//$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'xlsx');
$writer->save('php://output');
}

PhpSpreadsheet处理表格2的更多相关文章

  1. PhpSpreadsheet处理表格

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

  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. 博弈论 | 暑期集训Day2学习总结

    今天的知识点为博弈论. 相比于昨天完全陌生难懂的概念,今天接触到的东西应该算是非常容易理解了,一下子又对ACM的学习重拾信心.毕竟game作为主题也吸引眼球,每种博弈背景下引入的游戏介绍也十分有趣.主 ...

  2. 【DM642学习笔记一】关于Can't Initialize Target CPU的一种解决方法 : Error 0x80000240

    花了几天时间,终于可以顺利进入ccs软件开始学习了! 我使用的是瑞泰公司的ICETEK-DM642-IDK-M图像处理系统(ICETEK5100USB仿真器,仿真芯片为DM642).使用ccs2.21 ...

  3. 解决git push至远程仓库失败的问题

    产生问题的原因: 远程仓库存在本地不存在的文件, 一个常见的例子是创建repository时勾选了README.md, 但此时本地还没有这个文件, 就会导致本地文件无法同步到远程仓库的问题. 解决方法 ...

  4. 利用zepto.js实现移动页面图片全屏滑动

    HTML <%-- Created by IntelliJ IDEA. User: fanso2o Date: 2017/2/28 Time: 16:09 To change this temp ...

  5. cannot be cast to javax.servlet.Servlet 解决

    使用maven创建web项目的时候,通过添加依赖的方式来添加servlet-api,如下 通过maven的命令(tomcat:run)来启动项目,发现访问的时候报错,错误如下: 错误排查: 首先查看s ...

  6. 转:Linux 2.4.x内核软中断机制

    源地址:http://www.ibm.com/developerworks/cn/linux/kernel/interrupt/ Linux 2.4.x内核软中断机制 杨沙洲 (pubb@163.ne ...

  7. PAT甲级——A1039 Course List for Student

    Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists o ...

  8. 探索SpringBoot中的SpringMVC

    spring boot就是一个大框架里面包含了许许多多的东西,其中spring就是最核心的内容之一,当然就包含spring mvc.spring mvc 是只是spring 处理web层请求的一个模块 ...

  9. 关于Python3 打印中文乱码问题

    解决方案有两种: 在命令行前指定编码 $ PYTHONIOENCODING=utf-8 python test.py hello world 你好,世界 在代码中指定编码 import io impo ...

  10. 【vuex】vue2-happyfri

    我发现我对使用vuex并不擅长,现在跟我一起多多研究项目,好好补补vuex吧 这个开源项目地址为:https://github.com/bailicangdu/vue2-happyfri 这是一个答题 ...