PHP使用PhpSpreadsheet操作Excel实例详解

PHP使用PhpSpreadsheet操作Excel 一、PhpSpreadsheet 介绍 1、PhpSpreadsheet 是什么 PhpSpreadsheet是一个用纯PHP编写的库,提供了一组类,使您可以读取和写入不同的电子表格文件格式 PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到 使用 Ph... 阅读详情

这篇文章主要介绍了PHP使用PhpSpreadsheet操作Excel,结合实例形式详细分析了PHP使用PhpSpreadsheet操作Excel的相关组件下载、函数功能与操作技巧,需要的朋友可以参考下

本文实例讲述了PHP使用PhpSpreadsheet操作Excel。分享给大家供大家参考,具体如下:

一、PhpSpreadsheet 介绍

1、PhpSpreadsheet 是什么

PhpSpreadsheet是一个用纯PHP编写的库,提供了一组类,使您可以读取和写入不同的电子表格文件格式
PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到

  • 使用 PhpSpreadsheet 开发的PHP要求 7.1或更高版本
  • PhpSpreadsheet 支持链式操作

2、PhpSpreadsheet 支持的文件格式

3、PhpSpreadsheet 官方网址

  • https://phpspreadsheet.readthedocs.io

4、PhpSpreadsheet 安装

  • composer require phpoffice/phpspreadsheet

二、基础知识

1、载入

  # 载入composer自动加载文件 require 瑞块儿
  require 'vendor/autoload.php'; autoload 奥特老特

  # 给类文件的命名空间起个别名
  use PhpOffice\PhpSpreadsheet\Spreadsheet;

  # 实例化 Spreadsheet 对象
  $spreadsheet = new Spreadsheet();

2、获取工作簿

  • getActiveSheet
  # 载入composer自动加载文件
  require 'vendor/autoload.php';

  # 给类文件的命名空间起个别名
  use PhpOffice\PhpSpreadsheet\Spreadsheet;

  # 实例化 Spreadsheet 对象
  $spreadsheet = new Spreadsheet();

  # 获取活动工作薄
  $sheet = $spreadsheet->getActiveSheet();

3、获取单元格

  • 两种获取单元格方式
  • getCell
  • getCellByColumnAndRow
  # 载入composer自动加载文件
  require 'vendor/autoload.php';

  # 给类文件的命名空间起个别名
  use PhpOffice\PhpSpreadsheet\Spreadsheet;

  # 实例化 Spreadsheet 对象
  $spreadsheet = new Spreadsheet();

  # 获取活动工作薄
  $sheet = $spreadsheet->getActiveSheet();

  # 获取单元格
  $cell = $sheet->getCell('A1');
  $cell = $sheet->getCellByColumnAndRow(1,1);

4、设置单元格

  • setValue
  • 参数:单元格的值
    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    # 获取单元格
    $cellA = $sheet->getCell('A1');

    # 设置单元格值
    $cellA->setValue('欧阳克');

    # 获取单元格
    $cellB = $sheet->getCellByColumnAndRow(1,2);

    # 设置单元格值
    $cellB->setValue('黄蓉');

    # 获取设置单元格,链式操作
    $sheet->getCell('A3')->setValue('郭靖');
    $sheet->getCellByColumnAndRow(1,4)->setValue('杨康');

5、获取单元格值

  • getValue 获取单元格值
  • getCoordinate 获取单元格坐标
    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    # 获取单元格
    $cellA = $sheet->getCell('A1');

    # 设置单元格值
    $cellA->setValue('欧阳克');

    echo '值: ', $cellA->getValue(),PHP_EOL;
    echo '坐标: ', $cellA->getCoordinate();

6、保存表格

    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    # 获取单元格
    $cellA = $sheet->getCell('A1');

    # 设置单元格值
    $cellA->setValue('欧阳克');

    # 获取单元格
    $cellB = $sheet->getCellByColumnAndRow(1,2);

    # 设置单元格值
    $cellB->setValue('黄蓉');

    # 获取设置单元格,链式操作
    $sheet->getCell('A3')->setValue('郭靖');
    $sheet->getCellByColumnAndRow(1,4)->setValue('杨康');

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');

 

三、强化单元格

1、设置单元格

  • setCellValue
  • 参数1:单元格位置
  • 参数2:单元格的值
  • setCellValueByColumnAndRow
  • 参数1:列位置
  • 参数2:行位置
  • 参数3:单元格的值
    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1','ID');
    $sheet->setCellValue('B1','姓名');
    $sheet->setCellValue('C1','年龄');
    $sheet->setCellValue('D1','身高');

    $sheet->setCellValueByColumnAndRow(1, 2, 1);
    $sheet->setCellValueByColumnAndRow(2, 2, '欧阳克');
    $sheet->setCellValueByColumnAndRow(3, 2, '18岁');
    $sheet->setCellValueByColumnAndRow(4, 2, '188cm');


    $sheet->setCellValueByColumnAndRow(1, 3, 2);
    $sheet->setCellValueByColumnAndRow(2, 3, '黄蓉');
    $sheet->setCellValueByColumnAndRow(3, 3, '17岁');
    $sheet->setCellValueByColumnAndRow(4, 3, '165cm');


    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1','ID');
    $sheet->setCellValue('B1','姓名');
    $sheet->setCellValue('C1','年龄');
    $sheet->setCellValue('D1','身高');

    $sheet->setCellValueByColumnAndRow(1, 2, 1);
    $sheet->setCellValueByColumnAndRow(2, 2, '欧阳克');
    $sheet->setCellValueByColumnAndRow(3, 2, '18岁');
    $sheet->setCellValueByColumnAndRow(4, 2, '188cm');

    $sheet->setCellValueByColumnAndRow(1, 3, 2);
    $sheet->setCellValueByColumnAndRow(2, 3, '黄蓉');
    $sheet->setCellValueByColumnAndRow(3, 3, '17岁');
    $sheet->setCellValueByColumnAndRow(4, 3, '165cm');

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');

2、单元格文字样式

  • getStyle 获取单元格样式
  • getFont 获取单元格文字样式
  • setBold 设置文字粗细
  • setName 设置文字字体
  • setSize 设置文字大小
    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1','ID');
    $sheet->setCellValue('B1','姓名');
    $sheet->setCellValue('C1','年龄');
    $sheet->setCellValue('D1','身高');

    $sheet->setCellValueByColumnAndRow(1, 2, 1);
    $sheet->setCellValueByColumnAndRow(2, 2, '欧阳克');
    $sheet->setCellValueByColumnAndRow(3, 2, '18岁');
    $sheet->setCellValueByColumnAndRow(4, 2, '188cm');

    $sheet->setCellValueByColumnAndRow(1, 3, 2);
    $sheet->setCellValueByColumnAndRow(2, 3, '黄蓉');
    $sheet->setCellValueByColumnAndRow(3, 3, '17岁');
    $sheet->setCellValueByColumnAndRow(4, 3, '165cm');

    $sheet->getStyle('B2')->getFont()->setBold(true)->setName('宋体')->setSize(20);

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');

3、单元格文字颜色

  • getColor() 获取坐标颜色
  • setRGB() 设置字体颜色
  • getRGB() 获取字体颜色
  • setARGB() 设置字体颜色
  • getARGB() 获取字体颜色
    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1','ID');
    $sheet->setCellValue('B1','姓名');
    $sheet->setCellValue('C1','年龄');
    $sheet->setCellValue('D1','身高');

    $sheet->setCellValueByColumnAndRow(1, 2, 1);
    $sheet->setCellValueByColumnAndRow(2, 2, '欧阳克');
    $sheet->setCellValueByColumnAndRow(3, 2, '18岁');
    $sheet->setCellValueByColumnAndRow(4, 2, '188cm');

    $sheet->setCellValueByColumnAndRow(1, 3, 2);
    $sheet->setCellValueByColumnAndRow(2, 3, '黄蓉');
    $sheet->setCellValueByColumnAndRow(3, 3, '17岁');
    $sheet->setCellValueByColumnAndRow(4, 3, '165cm');

    $sheet->getStyle('B2')->getFont()->getColor()->setRGB('#AEEEEE');
    echo $sheet->getStyle('B2')->getFont()->getColor()->getRGB(),PHP_EOL;

    $sheet->getStyle('B3')->getFont()->getColor()->setARGB('FFFF0000');
    echo $sheet->getStyle('B3')->getFont()->getColor()->getARGB();

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');

4、单元格格式

  • getNumberFormat 获取格式
  • setFormatCode 设置格式

 

    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1','2019-10-10 10:10:10');
    $sheet->setCellValue('A2','2019-10-10 10:10:10');
    $sheet->getStyle('A2')->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_YYYYMMDD2);

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');
  • setWrapText 设置文本里的\n符合为:换行
    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1',"欧阳克\n黄蓉");
    $sheet->getStyle('A1')->getAlignment()->setWrapText(true);

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');
  • getHyperlink 获取单元格链接
  • setUrl 设置单元格链接
​
    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1','www.php.cn');
    $sheet->getCell('A1')->getHyperlink()->setUrl('http://www.php.cn');

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');

​

四、批量操作

1、使用公式

    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 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)');  // 使用转义字符

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');

2、批量赋值

  • fromArray 从数组中的值填充工作表
  • 参数1:数据(数组)
  • 参数2:去除某个值
  • 参数3:从哪个位置开始
    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $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' );

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');

3、合并单元格

    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->mergeCells('A1:B5');
    $sheet->getCell('A1')->setValue('欧阳克');

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');

合并后,赋值只能给A1,开始的坐标。

4、拆分单元格

    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->mergeCells('A1:B5');

    $sheet->unmergeCells('A1:B5');

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');

5、列和行操作

  • getColumnDimension 获取一列
  • getWidth 获取一列的宽度
  • setWidth 设置一列的宽度
  • setAutoSize 设置一列的宽度自动调整
  • getDefaultColumnDimension 获取一列的默认值
    # 载入composer自动加载文件

    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名

    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    echo $sheet->getColumnDimension('A')->getWidth();

    $sheet->getColumnDimension('A')->setWidth(100);

    $sheet->getColumnDimension('B')->setAutoSize(true);

    $sheet->getDefaultColumnDimension()->setWidth(1);

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');
  • getRowDimension 获取一行
  • getRowHeight 获取一行的高度
  • setRowHeight 设置一行的高度
    # 载入composer自动加载文件

    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    echo $sheet->getRowDimension(1)->getRowHeight();

    $sheet->getRowDimension(1)->setRowHeight(100);

    $sheet->getDefaultRowDimension()->setRowHeight(1);

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');
  • getHighestColumn 获取总列数
  • getHighestRow 获取总行数
    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1','ID');
    $sheet->setCellValue('B1','姓名');
    $sheet->setCellValue('C1','年龄');
    $sheet->setCellValue('D1','身高');

    $sheet->setCellValueByColumnAndRow(1, 2, 1);
    $sheet->setCellValueByColumnAndRow(2, 2, '欧阳克');
    $sheet->setCellValueByColumnAndRow(3, 2, '18岁');
    $sheet->setCellValueByColumnAndRow(4, 2, '188cm');

    $sheet->setCellValueByColumnAndRow(1, 3, 2);
    $sheet->setCellValueByColumnAndRow(2, 3, '黄蓉');
    $sheet->setCellValueByColumnAndRow(3, 3, '17岁');
    $sheet->setCellValueByColumnAndRow(4, 3, '165cm');

    echo $sheet->getHighestColumn();
    echo $sheet->getHighestRow();

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');

6、单元格样式

  • applyFromArray
    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1','ID');
    $sheet->setCellValue('B1','姓名');
    $sheet->setCellValue('C1','年龄');
    $sheet->setCellValue('D1','身高');

    $sheet->setCellValueByColumnAndRow(1, 2, 1);
    $sheet->setCellValueByColumnAndRow(2, 2, '欧阳克');
    $sheet->setCellValueByColumnAndRow(3, 2, '18岁');
    $sheet->setCellValueByColumnAndRow(4, 2, '188cm');

    $styleArray = [
        // use PhpOffice\PhpSpreadsheet\Style\Alignment; 文件里常量,就是参数
        // Alignment::HORIZONTAL_CENTER 水平居中
        // Alignment::VERTICAL_CENTER   垂直居中
        'alignment' => [
            // 'horizontal' => Alignment::HORIZONTAL_CENTER, //水平居中
            // 'vertical' => Alignment::VERTICAL_CENTER, //垂直居中
            'horizontal' => 'center', //水平居中
            'vertical' => 'center', //垂直居中
        ],

        // use PhpOffice\PhpSpreadsheet\Style\Border; 文件里常量,就是参数
        // Border::BORDER_THICK 边框样式
        'borders' => [
            'outline' => [
                // 'borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK',
                'borderStyle' => 'thick',
                'color' => ['argb' => 'FFFF0000'],
            ],
        ],
        'font' => [
            'name' => '黑体',
            'bold' => true,
            'size' => 22
        ]
    ];

    $sheet->getStyle('A1')->applyFromArray($styleArray);

    # Xlsx类 将电子表格保存到文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    $writer = new Xlsx($spreadsheet);
    $writer->save('1.xlsx');

五、工作薄操作

1、xlsx 文件下载

  • IOFactory::createWriter 写入到文件
    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1','ID');
    $sheet->setCellValue('B1','姓名');
    $sheet->setCellValue('C1','年龄');
    $sheet->setCellValue('D1','身高');

    $sheet->setCellValueByColumnAndRow(1, 2, 1);
    $sheet->setCellValueByColumnAndRow(2, 2, '欧阳克');
    $sheet->setCellValueByColumnAndRow(3, 2, '18岁');
    $sheet->setCellValueByColumnAndRow(4, 2, '188cm');

    // MIME 协议,文件的类型,不设置,会默认html
    header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

    // MIME 协议的扩展
    header('Content-Disposition:attachment;filename=1.xlsx');

    // 缓存控制
    header('Cache-Control:max-age=0');

    $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');

    // php://output 它是一个只写数据流, 允许你以 print 和 echo一样的方式写入到输出缓冲区。
    $writer->save('php://output');

2、xls 文件下载

    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1','ID');
    $sheet->setCellValue('B1','姓名');
    $sheet->setCellValue('C1','年龄');
    $sheet->setCellValue('D1','身高');

    $sheet->setCellValueByColumnAndRow(1, 2, 1);
    $sheet->setCellValueByColumnAndRow(2, 2, '欧阳克');
    $sheet->setCellValueByColumnAndRow(3, 2, '18岁');
    $sheet->setCellValueByColumnAndRow(4, 2, '188cm');

    $filename = '1.xls';
    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');

3、设置工作簿标题

  • setTitle
    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1','ID');
    $sheet->setCellValue('B1','姓名');
    $sheet->setCellValue('C1','年龄');
    $sheet->setCellValue('D1','身高');

    $sheet->setCellValueByColumnAndRow(1, 2, 1);
    $sheet->setCellValueByColumnAndRow(2, 2, '欧阳克');
    $sheet->setCellValueByColumnAndRow(3, 2, '18岁');
    $sheet->setCellValueByColumnAndRow(4, 2, '188cm');

    $sheet->setTitle('欧阳克');

    // MIME 协议,文件的类型,不设置,会默认html
    header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

    // MIME 协议的扩展
    header('Content-Disposition:attachment;filename=1.xlsx');

    // 缓存控制
    header('Cache-Control:max-age=0');

    $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');

    // php://output 它是一个只写数据流, 允许你以 print 和 echo一样的方式写入到输出缓冲区。
    $writer->save('php://output');

4、读取表格

    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 创建读操作
    $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();

 六、office 后缀对应的 content-type

后缀MIME Type
.docapplication/msword
.dotapplication/msword
.docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.document
.dotxapplication/vnd.openxmlformats-officedocument.wordprocessingml.template
.docmapplication/vnd.ms-word.document.macroEnabled.12
.dotmapplication/vnd.ms-word.template.macroEnabled.12
.xlsapplication/vnd.ms-excel
.xltapplication/vnd.ms-excel
.xlaapplication/vnd.ms-excel
.xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xltxapplication/vnd.openxmlformats-officedocument.spreadsheetml.template
.xlsmapplication/vnd.ms-excel.sheet.macroEnabled.12
.xltmapplication/vnd.ms-excel.template.macroEnabled.12
.xlamapplication/vnd.ms-excel.addin.macroEnabled.12
.xlsbapplication/vnd.ms-excel.sheet.binary.macroEnabled.12
.pptapplication/vnd.ms-powerpoint
.potapplication/vnd.ms-powerpoint
.ppsapplication/vnd.ms-powerpoint
.ppaapplication/vnd.ms-powerpoint
.pptxapplication/vnd.openxmlformats-officedocument.presentationml.presentation
.potxapplication/vnd.openxmlformats-officedocument.presentationml.template
.ppsxapplication/vnd.openxmlformats-officedocument.presentationml.slideshow
.ppamapplication/vnd.ms-powerpoint.addin.macroEnabled.12
.pptmapplication/vnd.ms-powerpoint.presentation.macroEnabled.12
.potmapplication/vnd.ms-powerpoint.presentation.macroEnabled.12
.ppsmapplication/vnd.ms-powerpoint.slideshow.macroEnabled.12

七、实战

1、导出数据

  • login_log 登陆日志表
CREATE TABLE `login_log` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `uid` int(11) DEFAULT NULL COMMENT '管理员ID',
    `client` tinyint(4) unsigned DEFAULT '0' COMMENT '0-PC 1-ios 2-android',
    `add_time` int(11) DEFAULT '0' COMMENT '创建时间',
    `ip` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '登录IP',
    PRIMARY KEY (`id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=1122 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='登录日志';
  • index.php 数据列表页面
    # 载入方法库
    require 'function.php';
 
    $select = select('login_log','*');
    if(empty($select)){
        exit;
    } else {
        foreach($select as &$v){
            switch ($v['client']) {
                case 0:
                    $v['client'] = 'PC电脑';
                    break;
                case 1:
                    $v['client'] = '苹果手机';
                    break;
                case 2:
                    $v['client'] = '安卓手机';
                    break;
            }
            $v['add_time'] = date('Y-m-d H:i:s',$v['add_time']);
        }
    }
?>

<div>
    <a href="download.php" rel="external nofollow" class="layui-btn layui-btn-radius layui-btn-danger">导出数据</a>
</div>

<?php foreach($select as $v){ ?>
    <table class="layui-table">
        <thead>
            <tr>
                <th>ID</th>
                <th>用户ID</th>
                <th>登陆设备</th>
                <th>登陆时间</th>
                <th>登陆ip</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td><?php echo $v['id'] ?></td>
                <td><?php echo $v['uid'] ?></td>
                <td><?php echo $v['client'] ?></td>
                <td><?php echo $v['add_time'] ?></td>
                <td><?php echo $v['ip'] ?></td>
            </tr>
        </tbody>
    </table>
<?php } ?>
    
  • download.php 导出操作
    # 载入方法库
    require 'function.php';

    $select = select('login_log','*');

    if(empty($select)){
        exit;
    } else {
        foreach($select as &$v){
            switch ($v['client']) {
                case 0:
                    $v['client'] = 'PC电脑';
                    break;
                case 1:
                    $v['client'] = '苹果手机';
                    break;
                case 2:
                    $v['client'] = '安卓手机';
                    break;
            }
            $v['add_time'] = date('Y-m-d H:i:s',$v['add_time']);
        }
    }

    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use \PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1','ID');
    $sheet->setCellValue('B1','用户ID');
    $sheet->setCellValue('C1','登陆设备');
    $sheet->setCellValue('D1','登陆时间');
    $sheet->setCellValue('E1','登陆ip');
    $sheet->fromArray( $select, null, 'A2' );

    // MIME 协议,文件的类型,不设置,会默认html
    header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

    // MIME 协议的扩展
    header('Content-Disposition:attachment;filename=1.xlsx');

    // 缓存控制
    header('Cache-Control:max-age=0');

    $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');

    // php://output 它是一个只写数据流, 允许你以 print 和 echo一样的方式写入到输出缓冲区。
    $writer->save('php://output');

?>

2、导入数据

  • 数据库
# 商品分类表
CREATE TABLE `shop_cat` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `pid` int(10) unsigned DEFAULT '0' COMMENT '父ID',
    `name` varchar(50) DEFAULT NULL COMMENT '分类名',
    `status` tinyint(1) unsigned DEFAULT '1' COMMENT '状态 1开启 0关闭',
    PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='分类表';

INSERT INTO `shop_cat` VALUES (1, 0, '女装', 1);
INSERT INTO `shop_cat` VALUES (2, 0, '男装', 1);
INSERT INTO `shop_cat` VALUES (3, 0, '孕产', 1);
INSERT INTO `shop_cat` VALUES (4, 1, '连衣裙', 1);
INSERT INTO `shop_cat` VALUES (5, 1, '牛仔裤', 1);
INSERT INTO `shop_cat` VALUES (6, 2, '衬衫', 1);
INSERT INTO `shop_cat` VALUES (7, 3, '睡衣', 1);

# 商品表
CREATE TABLE `shop_list` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `cat_id` int(10) unsigned DEFAULT NULL COMMENT '分类ID',
    `cat_fid` int(10) unsigned DEFAULT NULL COMMENT '分类父ID',
    `title` varchar(200) NOT NULL COMMENT '商品标题',
    `price` double(10,2) unsigned NOT NULL COMMENT '价格',
    `img` varchar(200) NOT NULL COMMENT '商品图片',
    `add_time` int(10) unsigned NOT NULL COMMENT '添加时间',
    PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
  • index.php 导入页面
<div>
    <button type="button" class="layui-btn" id="up"><i class="layui-icon"></i>上传文件</button>
    <a href="download.php" rel="external nofollow" class="layui-btn layui-btn-danger"><i class="layui-icon"></i>示例下载</a>
</div>

<div id="log">
</div>
  • 导入功能
    $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]);
  • 下载示例(范文)
​
    # 载入composer自动加载文件
    require 'vendor/autoload.php';

    # 给类文件的命名空间起个别名
    use \PhpOffice\PhpSpreadsheet\Spreadsheet;

    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1','商品标题');
    $sheet->setCellValue('B1','一级分类');
    $sheet->setCellValue('C1','二级分类');
    $sheet->setCellValue('D1','进货价');
    $sheet->setCellValue('E1','图片');
    $data = [
        '云朵般轻盈的仙女裙 高级钉珠收腰长裙 气质无袖连衣裙',
        '女装',
        '连衣裙',
        279.99,
        'https://gd3.alicdn.com/imgextra/i3/266969832/O1CN01PWUBBB2MV6ekBKtb6_!!266969832.jpg_400x400.jpg',
    ];

    $sheet->fromArray(
        $data,
        null,
        'A2'
    );

    // MIME 协议,文件的类型,不设置,会默认html
    header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

    // MIME 协议的扩展
    header('Content-Disposition:attachment;filename=商品列表示例.xlsx');

    // 缓存控制
    header('Cache-Control:max-age=0');

    $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');

    // php://output 它是一个只写数据流, 允许你以 print 和 echo一样的方式写入到输出缓冲区。
    $writer->save('php://output');

​

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php操作office文档技巧总结(包括word,excel,access,ppt)》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php正则表达式用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

 

PhpOffice/PhpSpreadsheet读取和写入Excel PhpSpreadsheet读取和写入Excel 阅读详情

相关推荐

PhpSpreadsheet一个读取和写入电子表格文件的纯PHP库

PhpSpreadsheet一个读取和写入电子表格文件的纯 PHP 库。允许您读取和写入不同的电子表格文件格式,如 Excel 和 LibreOffice Calc。

PHP使用PhpSpreadsheet库的操作Excel表格

PhpSpreadsheet是一个用纯PHP编写的库,提供了一组类,使您可以读取和写入不同的电子表格文件格式PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到使用 PhpSpreadsheet 开发的PHP要求 7.1或更高版本PhpSpreadsheet 支持链式操作。

工作中学习,学习中进步 3435

具身智能端侧硬件选型实战:从算力需求到芯片对比与避坑指南

在边缘计算和嵌入式AI快速发展的今天,端侧智能设备的落地不再单纯比拼芯片的标称算力。TOPS数值只是初筛指标,真实的推理性能还受内存带宽、数据精度、稀疏性以及散热功耗等多重因素制约。理解不同视觉感知、决策规划与语言交互任务对算力的差异化需求,是选型的第一步。本文从技术原理出发,剖析了Jetson Orin、地平线征程、RK3588等主流平台的实测表现,并揭示了散热设计、供电链路与软件生态这三个极易被忽略的隐形瓶颈。通过完整的部署调优实录,展示了量化、缓存与电源模式优化如何提升端侧推理效率,为具身智能、无人车

weixin_29164185的博客 362

PhpSpreadsheet中文文档 | 简介

1、PhpSpreadsheet 是什么 PhpSpreadsheet是一个用纯PHP编写的库,提供了一组类,使您可以读取和写入不同的电子表格文件格式 PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到 使用 PhpSpreadsheet 开发的PHP要求 7.1或更高版本 PhpSpreadsheet 支持链式操作 2、PhpSpreadsheet 支持的文件格式

jackbon8的博客 4万+

开源TMS系统cortex-tms私有化部署与二次开发实战指南

运输管理系统(TMS)是现代物流数字化的核心组件,它通过将线下零散的物流操作转化为线上标准化、可追溯的数据流,实现订单、调度、跟踪与结算的全流程管理。其技术原理通常基于微服务架构,采用Spring Boot、Vue.js等成熟技术栈构建,确保系统的稳定性和可扩展性。TMS的技术价值在于显著提升物流企业的运营效率、降低成本并增强过程可控性,尤其适用于中小型物流企业实现从手工管理到系统化管理的跨越。在应用场景上,TMS广泛应用于车队管理、订单跟踪和财务结算等环节。本文聚焦于开源TMS项目cortex-tms,深

weixin_42523907的博客 746

Hypermesh二次开发实战:Tcl命令分类与常用函数详解(附避坑指南)

本文深入解析Hypermesh二次开发中Tcl命令的三大核心类别:界面命令、查询命令与修改命令。重点剖析了*createmark集合管理与hm_getvalue信息查询等关键函数的实战用法,并提供了避免Mark覆盖、生命周期管理等常见陷阱的实用指南,旨在帮助CAE工程师构建高效可靠的自动化前处理流程。

weixin_29233333的博客 240

PhpSpreadsheet读写Excel文件

本文介绍PhpSpreadsheet读写excel文件的一些使用方法。

测试开发小记 5497

【数据攻略】字节面试真题(含答案)+100道面试题库

数据攻略

qq_40002713的博客 4102

【PHP开发900个实用技巧】823.PHP Excel操作:PhpSpreadsheet的“表格数据魔法师”

本文摘要: PhpSpreadsheet四大核心技能助力高效处理Excel数据:1)基础读写注意文件编码和分块读取,避免内存溢出;2)样式定制采用模板复用和条件格式,提升表格专业性;3)公式运算结合循环动态生成,实现跨表计算;4)性能优化运用磁盘缓存和分块处理,攻克百万级数据瓶颈。文中通过典型错误示例与解决方案对比,提供可复用的代码片段,如样式模板变量存储、动态公式生成、CSV分块处理等实用技巧。掌握这些方法可显著提升PHP处理Excel的效率和稳定性,特别适合报表导出、大数据分析等场景。

870

企业和个人 AI 编程工具怎么选?2025 年 12 款主流工具(Claude/Cursor 等)核心能力 + 收费对比

2025 年最火的 12 款 AI 编程工具,像 Claude、Cursor 这些热门款,我把它们的核心能力、收费标准全扒得明明白白,看完这篇你不用再瞎琢磨,直接就能挑到对的!再说说 Cursor,美国 Cursor Labs 做的,还拿过红杉资本投资,2022 年推出后,2024 年收入直接涨了 6400%,势头很猛。总之,不管你是企业技术管理者、程序员,还是刚入门的 AI 小白,按自己的需求(语言、合规、预算)挑,保准能找到最适合的 AI 编程工具!最后给大家划重点,不同需求直接对号入座:?

hundred98的博客 2801

微信小程序 - error_msg:net::ERR_CONNECTION_RESET“(“errno“:600001,“errMsg“:“uploadFile:fail errcode:-101)

"errno":600001,"errMsg":"uploadFile:fail errcode:-101 cronet_error_code:-101 error_msg:net::ERR_CONNECTION_RESET"微信小程序,微信小程序wx.uploadFile报错,uniapp微信小程序uni.uploadFile上传文件报错,微信小程序调用wx.uploadFile返回错误ERR_CONNECTION_RESET,如何解决这个问题,上传图片出现报错,小程序上传视频报错,上传文件出现报错,如何

🏆 前端领域优质创作者 5410

Php操作Excel PhpSpreadsheet读取和写入Excel

PhpSpreadsheet是一个纯PHP编写的组件库,它使用现代PHP写法,代码质量和性能比PHPExcel高不少,完全可以替代PHPExcel(PHPExcel已不再维护)。使用PhpSpreadsheet可以轻松读取和写入Excel文档,支持Excel的所有操作。 官网:https://phpspreadsheet.readthedocs.io/en/stable/ 1. 初识PhpSpreadsheet 软件依赖 要使用PhpSpreadsheet需要满足以下条件: PHP5.6或更改版本

weixin_42411512的博客 2959

特征选择/筛选方法总结

作者:jliang https://blog.youkuaiyun.com/jliang3 1.特征选择介绍 1)特征分类 相关特征:对于学习任务(例如分类问题)有帮助,可以提升学习算法的效果; 无关特征:对于我们的算法没有任何帮助,不会给算法的效果带来任何提升; 冗余特征:不会对我们的算法带来新的信息,或者这种特征的信息可以由其他的特征推断出; 2)特征选择的目的 对于一个特定的学习算法...

jliang3的博客 8万+

用表格控制txt内容 php,使用PhpSpreadsheet对Excel文件进行操作

环境要求PHP 5.6或更高版本PHP扩展php_zipPHP扩展php_xmlPHP扩展php_gd2安装使用composer将PhpSpreadsheet安装到您的项目中:composer require phpoffice/phpspreadsheet使用引入PhpSpreadsheet:require 'vendor/autoload.php';use PhpOffice\PhpSprea...

weixin_35260789的博客 235

yolov11添加P2小目标检测头与添加P6超大目标检测头

本文介绍了YOLO目标检测模型中上下采样的原理及应用。上采样通过插值算法放大特征图,YOLO通常采用最近邻插值;下采样则通过带步长的卷积缩小特征图提取高层语义特征。文章详细阐述了这两种操作在YOLO中的实现方式、结构特点及对称性问题,指出下采样后会使用C3模块进行特征整合,上采样后通过concat抑制分割感。此外,还分析了不同分辨率特征图适合检测不同尺寸目标的原因,并提出添加4倍小目标检测头的方法,即对上采样后的特征进行concat和C3模块处理。最后给出了YOLOv5原模型结构和添加4倍检测头后的结构对比

m0_64661770的博客 820

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

PHP操作Excel插件phpspreadsheet

phpspreadsheet 插件 之前PHP操作Excel数据时都是使用PHPExcel库,但是phpoffice已经官方宣布PHPExcel已经被废弃不在维护,所以改用PHPExcel插件了。 安装 composer require phpoffice/phpspreadsheet 使用 因为一般业务给的Excel表格都比较大,所以需要分页处理,项目使用的是laravel框架。 首先创建一个分...

qq_28673091的博客 1079

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

php 使用phpoffice/phpspreadsheet拓展操作excel

一:安装phpoffice/phpspreadsheet composerrequirephpoffice/phpspreadsheet 二:phpoffice/phpspreadsheet API接口详解 PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsh...

huaweichenai的博客 5944

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

PHP 使用 PhpSpreadsheet 操作 excel 表格

PHP 操作 excel 表格

wangyufeng 1444

php调用office,php 使用phpoffice/phpspreadsheet拓展操作excel

一:安装phpoffice/phpspreadsheetcomposer require phpoffice/phpspreadsheet二:phpoffice/phpspreadsheet API接口详解PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到...

weixin_34662807的博客 3531

php使用PhpSpreadsheet导出Excel表格详解

1、简介PhpSpreadsheet 是一个用纯PHP编写的库,提供了一组类,使您可以读取和写入不同的电子表格文件格式PhpSpreadsheet 提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到。使用 PhpSpreadsheet 开发的PHP要求 7.1或更高版本PhpSpreadsheet 支持链式操作2、安装。

L小臣的博客 7161

2024年PHP使用PhpSpreadsheet操作Excel_phpspreadsheet官网(1),不服不行

*一个人可以走的很快,但一群人才能走的更远!$sheet->getStyle('B2')->getFont()->setBold(true)->setName('宋体')->setSize(20);**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.youkuaiyun.com/topics/618658159)****[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.youkuaiyun.com/topics/618658159)**文件里常量,就是参数。

2401_84905061的博客 859

PHP通过phpspreadsheet读取Excel文件

PHP通过phpspreadsheet读取Excel文件 安装 通过 Composer安装 composer require phpoffice/phpspreadsheet 读文件 三行代码解决Excel文件的读取操作: use PhpOffice\PhpSpreadsheet\Reader\Xlsx; // 实例化 Xlsx,如果想要对 Xls 文件进行操作...

GetcharZp的博客 1195

2024年PHP使用PhpSpreadsheet操作Excel_phpspreadsheet官网,15个经典面试问题及回答思路

php# 载入composer自动加载文件# 给类文件的命名空间起个别名# 实例化 Spreadsheet 对象# 获取活动工作薄# Xlsx类 将电子表格保存到文件```* setWrapText 设置文本里的\n符合为:换行```php# 载入composer自动加载文件# 给类文件的命名空间起个别名# 实例化 Spreadsheet 对象# 获取活动工作薄$sheet->setCellValue('A1',"欧阳克\n黄蓉")

2401_84905061的博客 575

PHP使用composer安装第三方扩展包教程 以及 Excel操作扩展 phpoffice/phpspreadsheet 的使用

PhpSpreadsheet对于不同格式的文件有不同的读取方法,比如xlsx格式使用\PhpOffice\PhpSpreadsheet\Reader\Xlsx(),csv格式使用\PhpOffice\PhpSpreadsheet\Reader\Csv(),不过你直接使用这些类,它会提示不不建议直接使用,最好是使用\PhpOffice\PhpSpreadsheet\IOFactory 这个工厂类,通过IOFactory::ccreateReader方法来找到对应的类的处理器。适用于两种不同的加载方式。

本博客记录了从2014年以来在工作学习中遇到的技术问题、解决方法以及部分个人人生经历、经验等内容。 1987

PHP使用PhpSpreadsheet 导出excel文件

PhpSpreadsheet 是使用PHP语言编写的用户操作excel的类库,提供了一系列丰富的接口,可很方便的对文档属性、单元格进行操作,包括设置样式、图片、日期、函数等等。以上就是Thinkphp6使用PhpSpreadsheet保存为Excel文件的使用方法。

2086

PHPSpreadsheet Helper:简化Excel操作的助手库

PHPSpreadsheet Helper:简化Excel操作的助手库 PHPSpreadsheet Helper 是一个开源项目,旨在简化基于 PhpSpreadsheet 库的 Excel 文件操作。该项目使用 PHP 编程语言开发,提供了便捷的方法来读写 Excel 文件,使得处理 Excel 文档变得更加直观和高效。 项目的基础介绍 PHPSpreadsheet Helper 是对 Php...

gitblog_01182的博客 645
上一篇: Php生成器详解 Generator以及yield到底是什么?
下一篇: phpspreadsheet 中文文档 粗翻版
withoutfear
博客等级 码龄13年 541粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值