首页 > 编程语言 >PhpSpreadsheet中文文档 | Spreadsheet操作教程实例

PhpSpreadsheet中文文档 | Spreadsheet操作教程实例

时间:2024-05-18 11:52:38浏览次数:15  
标签:A1 sheet Spreadsheet cat PhpSpreadsheet getValue 文档 setCellValue id

参考:https://blog.csdn.net/jackbon8/article/details/107940638

1.导出表格

<?php
    namespace app
    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();
    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1','10');
    $sheet->setCellValue('B1','15');
    $sheet->setCellValue('C1','20');
    $sheet->setCellValue('D1','25');
    $sheet->setCellValue('E1','30');
    $sheet->setCellValue('G1','35');
    $sheet->setCellValue('A2', '总数:');
    $sheet->setCellValue('B2', '=SUM(A1:G1)');
    $sheet->setCellValue('A3', '平均数:');
    $sheet->setCellValue('B3', '=AVERAGE(A1:G1)');
    $sheet->setCellValue('A4', '最小数:');
    $sheet->setCellValue('B4', '=MIN(A1:G1)');
    $sheet->setCellValue('A5', '最大数:');
    $sheet->setCellValue('B5', '=MAX(A1:G1)');
    $sheet->setCellValue('A6', '最大数:');
    $sheet->setCellValue('B6', '\=MAX(A1:G1)');    // 使用转义字符
    // 批量赋值
    $sheet->setCellValue('A1','ID');
    $sheet->setCellValue('B1','姓名');
    $sheet->setCellValue('C1','年龄');
    $sheet->setCellValue('D1','身高');
    $sheet->fromArray(
        [
            [1,'欧阳克','18岁','188cm'],
            [2,'黄蓉','17岁','165cm'],
            [3,'郭靖','21岁','180cm']
        ],
        3,
        'A2'
    );
    // 合并单元格 合并后,赋值只能给A1,开始的坐标。
    $sheet->mergeCells('A1:B5');
    $sheet->getCell('A1')->setValue('欧阳克');
    
    # Xlsx类 将电子表格保存到文件
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');
    
   // 客户端文件下载
    header('Content-Type:application/vnd.ms-excel');
    header('Content-Disposition:attachment;filename=1.xls');
    header('Cache-Control:max-age=0');
    $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
    $writer->save('php://output');

2.读取表格

<?php
    namespace app;
    # 创建读操作
    $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
    # 打开文件、载入excel表格
    $spreadsheet = $reader->load('1.xlsx');
    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    # 获取 单元格值 和 坐标
    $cellC1 = $sheet->getCell('B2');
    echo '值: ', $cellC1->getValue(),PHP_EOL;
    echo '坐标: ', $cellC1->getCoordinate(),PHP_EOL;

    $sheet->setCellValue('B2','欧阳锋');

    # 获取 单元格值 和 坐标
    $cellC2 = $sheet->getCell('B2');
    echo '值: ', $cellC2->getValue(),PHP_EOL;
    echo '坐标: ', $cellC2->getCoordinate();

3.导入功能

<?php
    $file = $_FILES['file']['tmp_name'];
    # 载入composer自动加载文件
    require 'vendor/autoload.php';
    # 载入方法库
    require 'function.php';

    # 创建读操作
    $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
    # 打开文件、载入excel表格
    $spreadsheet = $reader->load($file);
    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    # 获取总列数
    $highestColumn = $sheet->getHighestColumn();
    # 获取总行数
    $highestRow = $sheet->getHighestRow();

    # 列数 改为数字显示
    $highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn);
    $log = [];
    for($a=2;$a<$highestRow;$a++){
        $title = $sheet->getCellByColumnAndRow(1,$a)->getValue();
        $cat_fname = $sheet->getCellByColumnAndRow(2,$a)->getValue();
        $cat_name = $sheet->getCellByColumnAndRow(3,$a)->getValue();
        $price = $sheet->getCellByColumnAndRow(4,$a)->getValue();
        $img = $sheet->getCellByColumnAndRow(5,$a)->getValue();

        $cat_fid = find('shop_cat','id','name="'.$cat_fname.'"');
        $cat_id = find('shop_cat','id','name="'.$cat_name.'"');
        $data = [
            'title' => $title,
            'cat_fid' => $cat_fid['id'],
            'cat_id' => $cat_id['id'],
            'price' => $price,
            'img' => $img,
            'add_time' => time(),
        ];
        $ins = insert('shop_list',$data);
        if($ins){
            $log[] = '第'.$a.'条,插入成功';
        }else{
            $log[] = '第'.$a.'条,插入失败';
        }
    }
    echo json_encode(['code'=>0,'msg'=>'成功','data'=>$log]);

 

标签:A1,sheet,Spreadsheet,cat,PhpSpreadsheet,getValue,文档,setCellValue,id
From: https://www.cnblogs.com/wjs2019/p/18199178

相关文章

  • 毕设-接口文档
    毕设-接口文档1.宠物订单管理1.1订单分页查询请求路径:/commodity请求方式:GET接口描述:该接口用于商品订单列表数据查询1.1.2请求参数/commodity?page=11.1.3响应参数参数格式:{"code":200,"message":"成功","data":{"content":[{//Order对象实例,包含订......
  • 如何使Office文档默认“不压缩文件中的图像”
    原文链接:https://blog.csdn.net/taller_2000/article/details/119667972Office2007之后的版本提供压缩图片的功能,压缩文件中的图片,也减少文件的大小,占用更少的硬盘空间。在Office的选项设置中,也提供了“不压缩文件中的图像”的选项,非常不方便的时,新建文档的默认选项是压缩图像......
  • 基于Java网络书店商城设计实现(源码+lw+部署文档+讲解等)
    系统介绍:随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于网络书店商城当然也不能排除在外,随着网络技术的不断成熟,带动了网络书店商城,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种个性化的平台特......
  • hive-3.1.2分布式搭建文档
    hive-3.1.2分布式搭建文档1.上传解压配置环境变量#1、解压tar-zxvfapache-hive-3.1.2-bin.tar.gz-C/usr/local/soft/#2、重名名mvapache-hive-3.1.2-binhive-3.1.2#3、配置环境变量vim/etc/profile#4、在最后增加配置exportHIVE_HOME=/usr/local/soft/hiv......
  • 效率提升超30% ,合合信息智能文档处理技术赋能央企保理公司供应链审单
    全球经济一体化的背景下,供应链金融的发展对于提高资金利用效率,促进产业链协同具有重要意义。供应链金融业务需要基于对贸易凭证的信息审核与交叉比对,确保贸易背景真实性与准确性。传统审单流程以人工审核为主,存在耗时长、精度低,信息不透明问题,制约了供应链金融的顺畅运行与发展。......
  • ShowDoc:打造IT团队高效协作的文档与API管理神器
    介绍ShowDoc:一款适用于IT团队的知识文档与API管理工具ShowDoc是一款专为IT团队设计的知识文档和API管理工具,它允许用户通过Markdown语法轻松地创建和编辑美观的API文档、数据字典文档、技术文档,甚至在线Excel文档。ShowDoc支持多平台客户端,包括Windows、Mac、iOS和Android,为用......
  • 用手机免费pdf转word文档怎么操作?
    众所周知,PDF是不可直接编辑的文件,尤其是扫描件。如果要将pdf文件转换为word文件,如何进行转换?其实我们可以通过工具把pdf转word文档的操作哦。有很多人不知道用什么工具好,小编今天就给大家推荐一款手机也能免费将pdf文档转成word文档的在线工具smallpdf中文版。pdf转word可以在线......
  • XeLaTeX 无法编译含有经过 pdfcrop 裁剪的 PDF 文件的文档
    今天在写LaTeX文档时踩了个大坑,我在文档里插入了一个PDF图片之后文档无法编译了。于是我去掉多余代码,做了一个最小工作示例:\documentclass{article}\usepackage{graphicx}\begin{document}\includegraphics{my_image.pdf}\end{document}就是这样一个简单的代码,pdfLa......
  • 微信3.9.8.25机器人(Hook注入)搭建教程文档
    开源地址https://github.com/ttttupup/wxhelper  微信破解dllhttps://github.com/nefarius/Injector  注入工具https://github.com/tom-snow/wechat-windows-versions/releases 微信历史版本基本原理启动指定版本PC微信以后,利用注入程序将dll文件注入到微信进程内,可......
  • Vue3学习(二十四)- 文档页面功能开发
    写在前面这部分真的感觉超级难,其实也不能说难,主要是真的想不到这个思路应该这么做,或者说他好厉害,他怎么知道该这么设计实现。说下难点吧,我觉得后天逻辑还好,主要是前端部分真的需要点花点时间来思考,比如布局、交互设计的实现等等。文档页面功能开发1、任务拆解增加文档页面,......