当前位置:网站首页>php使用phpoffice/phpspreadsheet导入导出excel表格
php使用phpoffice/phpspreadsheet导入导出excel表格
2022-08-09 04:43:00 【flysnownetwork】
phpoffice/phpspreadsheet引入
composer require phpoffice/phpspreadsheet
导出
可以直接数组导出,注释里代码为循环进行单元格赋值房是
<?php
use \PhpOffice\PhpSpreadsheet\Spreadsheet;
use \PhpOffice\PhpSpreadsheet\IOFactory;
class ErpOrder extends Model
{
public function export($adminId)
{
try {
$list = $this->field('order_number,good_title,sku,good_number,user_name,user_mobile,user_address,express_number')
->where(['status' => 2,'send_status' => 1,'partner_admin_id' => $adminId])
->select()
->toArray();
//导出表格
$objExcel = new Spreadsheet();
$objWriter = IOFactory::createWriter($objExcel, 'Xlsx');
$objActSheet = $objExcel->getActiveSheet(0);
$objActSheet->setTitle('发货单');//设置excel的标题
$keys= ['订单号','商品名称','sku','数量','收件人姓名','联系电话','收货地址','物流单号'];
array_unshift($list,$keys);
$objActSheet->fromArray($list);
// $objActSheet->setCellValue('A1', '订单号');
// $objActSheet->setCellValue('B1', '商品名称');
// $objActSheet->setCellValue('C1', 'sku');
// $objActSheet->setCellValue('D1', '数量');
// $objActSheet->setCellValue('E1', '收件人姓名');
// $objActSheet->setCellValue('F1', '联系电话');
// $objActSheet->setCellValue('G1', '收货地址');
// $objActSheet->setCellValue('H1', '物流单号');
// $baseRow = 3; //数据从N-1行开始往下输出
// foreach ($list as $r => $d) {
// $i = $baseRow + $r;
// $objExcel->getActiveSheet()->setCellValue('A' . $i, $d['date']);
// $objExcel->getActiveSheet()->setCellValue('B' . $i, $d['num']);
// $objExcel->getActiveSheet()->setCellValue('C' . $i, $d['recharge']);
// $objExcel->getActiveSheet()->setCellValue('D' . $i, $d['rate']);
// $objExcel->getActiveSheet()->setCellValue('E' . $i, $d['invest_money']);
// $objExcel->getActiveSheet()->setCellValue('F' . $i, $d['refund_money']);
// $objExcel->getActiveSheet()->setCellValue('G' . $i, $d['money']);
// $objExcel->getActiveSheet()->setCellValue('H' . $i, $d['status']);
// }
$objWriter->save(__DIR__.'/a12.xlsx');
return ['data' => '', 'code' => 0, 'msg' => 'success'];
} catch (Throwable $e) {
return ['data' => '', 'code' => $e->getCode(), 'msg' => $e->getMessage()];
}
}
}
导入
/** *导入 * @param $url * @param $adminId * @return array * @throws \think\exception\PDOException * @date 2022-08-04 14:40 */
public function import($url,$adminId)
{
try {
$this->startTrans();
$filename = tempnam(sys_get_temp_dir(), "xlsx");
$handle = fopen($filename, "wb");
fwrite($handle, file_get_contents($url));
$objReader = IOFactory::createReader('Xlsx');
$objPHPExcel = $objReader->load($filename); //$filename可以是上传的表格
$data = $objPHPExcel->getSheet(0)->toArray();//将sheet1表中的数据转换为数组类型数据
// $keys=array_shift($data);//从数组中删除第一条数据,返回值为删除的数据
$keys = ['order_number', 'good_title', 'sku', 'good_number', 'user_name', 'user_mobile', 'user_address', 'express_number'];
array_shift($data);
foreach ($data as $key => $value)
$list[] = array_combine($keys, $value);
foreach ($list as $k => $v) {
if (!empty($v['order_number'])) {
$info = $this->where(['order_number' => $v['order_number'], 'partner_admin_id' => $adminId])->find();
$info->express_number = $v['express_number'];
$info->send_status = 2;
$info->send_time = time();
$info->save();
}
}
$this->commit();
return ['data' => '', 'code' => 0, 'msg' => 'success'];
} catch (Throwable $e) {
$this->rollback();
return ['data' => '', 'code' => $e->getCode(), 'msg' => $e->getMessage()];
}
}
边栏推荐
- MySQL: Implementation Principles of Submitted Read and Repeatable Read | MVCC (Multi-Version Concurrency Control) - Notes for Your Own Use
- 【暑期每日一题】洛谷 P4325 [COCI2006-2007#1] Modulo
- JVM学习——1——虚拟机基础概念
- Ridge regression and LASSO regression
- MySQL:意向共享锁和意向排它锁 | 死锁 | 锁的优化
- 杰理之播歌曲前后音量大小不一样【篇】
- 基因对疾病的影响规律--读论文
- MySql.Data.MySqlClient.DBNull
- 2022年安全员-A证特种作业证考试题库及在线模拟考试
- pr22.5最新版下载地址
猜你喜欢
随机推荐
【暑期每日一题】洛谷 P8086 『JROI-5』Music
ABP中的数据过滤器
【暑期每日一题】洛谷 P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles
etcd学习笔记 - 入门
单元测试覆盖率怎么算?
2022 Security Officer-B Certificate Exam Practice Questions and Online Mock Exam
[math] dot product and cross product
ABP 6.0.0-rc.1的新特性
[Server data recovery] A case of data recovery when the Ext4 file system cannot be mounted and an error is reported after fsck
杰理之手机OTG问题【篇】
Construction and practice of full stack code test coverage and use case discovery system
高效回顾深度学习DL、CV、NLP
gopacket usage example
Query the size of the total points obtained in a certain time period to sort
MySQL: redo log log - notes for personal use
Ridge regression and LASSO regression
“error“: { “root_cause“: [{ “type“: “circuit_breaking_exception“, “reason“: “[parent] D [solved]
TCP/IP协议中分包与重组原理介绍、分片偏移量的计算方法、IPv4报文格式
2022年起重机司机(限桥式起重机)考试题库及模拟考试
Dingding conflicts with RStudio shortcuts--Dingding shortcut settings