PhpSpreadsheet 学习和使用

PhpSpreadsheet 学习和使用1、安装composerrequirephpoffice/phpspreadsheet2、usePhpOffice\PhpSpreadsheet\Spreadsheet;usePhpOffice\PhpSpreadsheet\Writer\Xlsx;usePhpOffice\PhpSpreadsheet\Style\Alignment;usePhpOffice\Ph…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1、安装

 composer require phpoffice/phpspreadsheet

2、
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Font;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\IOFactory;
3、数据库导出到excel表中
//导出测试
public function daochu()
{
    $spreadsheet = new Spreadsheet();
    $worksheet = $spreadsheet->getActiveSheet();
    //设置工作表标题名称
    $worksheet->setTitle('车型品牌');

    //表头
    //设置单元格内容
    $worksheet->setCellValueByColumnAndRow(1, 1, '车型品牌表');
    $worksheet->setCellValueByColumnAndRow(1, 2, 'ID');
    $worksheet->setCellValueByColumnAndRow(2, 2, '品牌名');
    $worksheet->setCellValueByColumnAndRow(3, 2, '图片');
    $worksheet->setCellValueByColumnAndRow(4, 2, '状态');

    //合并单元格
    $worksheet->mergeCells('A1:D1');

    //字体设置
    $styleArray = [
        'font' => [
            'bold' => true,  //字体加粗
            'color' => [ 'rgb' => 'FF6A6A' ], //字体颜色
            'strikethrough' => true, //删除线
            'italic' => true, //倾斜
            'underline' => Font::UNDERLINE_DOUBLE,
        ],
        'alignment' => [
            'horizontal' => Alignment::HORIZONTAL_CENTER,
        ],
    ];

    //设置单元格样式
    $worksheet->getStyle('A1')->applyFromArray($styleArray)->getFont()->setSize(28);

    $worksheet->getStyle('A2:D2')->applyFromArray($styleArray)->getFont()->setSize(14);

    //设置字体颜色
    //$worksheet->getStyle('B2')->getFont()->getColor()->applyFromArray(['rgb' => 'C0FF3E']);
    //背景色
    //$worksheet->getStyle('B2')->getFill()->applyFromArray( [ 'fillType' => Fill::FILL_GRADIENT_LINEAR, 'rotation' => 0, 'startColor' => [ 'rgb' => '000000' ], 'endColor' => [ 'argb' => 'FFFFFFFF' ] ] );
    //设置单元格 自动宽度显示
    $spreadsheet->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);

    $rows = Db::name('cartype_logo')->select();
    $len = Db::name('cartype_logo')->count();
    $j = 0;
    for ($i=0; $i < $len; $i++) {
        $j = $i + 3; //从表格第3行开始
        $worksheet->setCellValueByColumnAndRow(1, $j, $rows[$i]['logo_id']);
        $worksheet->setCellValueByColumnAndRow(2, $j, $rows[$i]['logo_name']);
        $worksheet->setCellValueByColumnAndRow(3, $j, $rows[$i]['logo_img']);
        $worksheet->setCellValueByColumnAndRow(4, $j, $rows[$i]['status']);
    }

    $styleArrayBody = [
        'borders' => [
            'allBorders' => [
                'borderStyle' => Border::BORDER_THIN,
                'color' => ['argb' => '666666'],
            ],
        ],
        'alignment' => [
            'horizontal' => Alignment::HORIZONTAL_CENTER,
        ],
    ];

    $total_rows = $len + 2;
    //添加所有边框/居中
    $worksheet->getStyle('A1:D'.$total_rows)->applyFromArray($styleArrayBody);

    $filename = '品牌表.xlsx';
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="'.$filename.'"');
    header('Cache-Control: max-age=0');

    $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
    $writer->save('php://output');
}
3、excel导入数据库表汇中
//导入测试
public function daoru()
{
    $reader = IOFactory::createReader('Xls');
    $reader->setReadDataOnly(TRUE);
    $spreadsheet = $reader->load('C:\Users\Administrator\Desktop\logo.xls'); //载入excel表格

    $worksheet = $spreadsheet->getActiveSheet();
    $highestRow = $worksheet->getHighestRow(); // 总行数

    $lines = $highestRow - 1;

    if ($lines <= 0) {
        exit('Excel表格中没有数据');
    }

    $new = [];
    for ($row = 2; $row <= $highestRow; ++$row) {

        $new_logos = $worksheet->getCellByColumnAndRow(1, $row)->getValue(); //品牌名
        $new_png = $worksheet->getCellByColumnAndRow(2, $row)->getValue(); //图片地址

        $new[] = ['logo_name'=> $new_logos,'logo_img'=>$new_png];

    }
$new = [];
for ($row = 2; $row <= $highestRow; ++$row) {

    $new_logos = $worksheet->getCellByColumnAndRow(1, $row)->getValue(); //品牌名
    $new_png = $worksheet->getCellByColumnAndRow(2, $row)->getValue(); //图片地址

    $new[] = ['logo_name'=> $new_logos,'logo_img'=>$new_png];

}
foreach ($new as $k => $v) {
 
        $data['logo_name'] = $v[0];
        $data['logo_img'] = $v[1];
        //var_dump($data); die;
        Db::name('cartype_logo')->insert($data);
    
}

echo ‘ok’;

}

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192586.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mac系统安装win10双系统「建议收藏」

    mac系统安装win10双系统「建议收藏」一个月前,为了在家里学习单片机,在macbookair系统基础上,安装了win10,搞了一个双系统。在安装之前,看了很多资料,基本上提到两点,一个是准备win10镜像,一个是准备win10安装启动程序,而且至少需要一个U盘,有的也说需要两个,一个用来装win10镜像,一个用来装win10启动程序。最后动手安装的时候,一个U盘也没有使用,直接把win10镜像下载到mac系统中,然后启动mac上的磁盘管理工具,按照提示,傻瓜式的进行下一步。有两个地方需要我们手动设…

    2022年9月27日
    1
  • C#发送邮件C/s,B/s通用

    C#发送邮件C/s,B/s通用

    2021年7月31日
    54
  • NOVO SOP (SOP简介及历史)[通俗易懂]

    NOVO SOP (SOP简介及历史)[通俗易懂]SOP(StandardOperationProcedure),标准作业程序。一、什么是SOP(标准作业程序)  所谓SOP,是StandardOperationProcedure三个单词中首字母的大写,即标准作业程序(标准操作程序),就是将某一事件的标准操作步骤和要求以统一的格式描述出来,用来指导和规范日常的工作。  SOP的精髓,就是将细节进行量化,用更通俗的话来…

    2022年5月25日
    33
  • 教你用Python自制一张好看的指数估值图!这招很好用!

    教你用Python自制一张好看的指数估值图!这招很好用!对于以定投指数的方式理财的朋友 最需要关注的指标便是各个指数的估值 在指数低估时买入 高估时卖出 那如何制作一张估值图来跟踪指数的估值情况呢 本文就从 0 到 1 介绍如何用 Matplotlib 画一张漂亮的指数估值图 准备数据首先 准备我们需要的数据 一般来说 经历了一轮牛熊周期的历史估值更具比较意义 所以 这里以上证指数 2013 年到目前为止的行情数据为例进行演示 同时 采用滚动市盈率为估值指标 数据来源为 tushare importpandas

    2025年6月1日
    2
  • phpstorm2021 激活码【永久激活】

    (phpstorm2021 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlML…

    2022年3月21日
    154
  • 使用BitBlt实现位图背景透明

    使用BitBlt实现位图背景透明我们先看一下 BitBlt 这个函数的原型:BOOLBitBlt(int x, inty,intnWidth,nHeight,CDC*PsrcDC,intxSrc,intySrc,DWORDdwRop);参数介绍:                    intx               表示绘制位图目标左上角x坐标;

    2022年10月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号