php使用phpspreadsheet实现excel导入导出

 composer引入phpspreadsheet

composer require phpoffice/phpspreadsheet
<?php

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

/**
 * [数据导出]
 * @return [type] [description]
 */
function export() {
    $list = [
        [
            'id' => 1,
            'name' => '字段1'
        ],
        [
            'id' => 2,
            'name' => '字段1'
        ]
    ];

    $title = ['ID', '名称'];
    // Create new Spreadsheet object
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    //表头
    //设置单元格内容
    $titCol = 'A';
    foreach ($title as $key => $value) {
        // 单元格内容写入
        $sheet->setCellValue($titCol . '1', $value);
        $spreadsheet->getActiveSheet()->getColumnDimension($titCol)->setAutoSize(true);
        $titCol++;
    }
    $row = 2; // 从第二行开始
    foreach ($list as $item) {
        $dataCol = 'A';
        // 单元格内容写入
        $sheet->setCellValue($dataCol . $row, $item['id']);$dataCol++;
        $sheet->setCellValue($dataCol . $row, $item['name']);$dataCol++;

        $row++;
    }

    $name = 'export-'.date('YmdHi');
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="' . $name . '.xlsx"');
    header('Cache-Control: max-age=0');
    $writer = new Xlsx($spreadsheet);
    $writer->save('php://output');
    //删除清空:
    $spreadsheet->disconnectWorksheets();

}

/**
 * [import 数据导入]
 * @return [type] [description]
 */
function import() {
    $file_url = './uploads/excel/import.xls';

    // 有Xls和Xlsx格式两种
    $objReader = IOFactory::createReader('Xls');
    if (!$objReader->canRead($file_url)) {
        $objReader = IOFactory::createReader('Xlsx');
        // if (!$objRead->canRead($file_url)) {
        //     return $this->error('文件读取错误, 只支持导入Excel文件!');
        // }
    }

    $objPHPExcel = $objReader->load($file_url);  //$filename可以是上传的表格,或者是指定的表格
    $sheet = $objPHPExcel->getSheet(0);   //excel中的第一张sheet
    $highestRow = $sheet->getHighestRow();       // 取得总行数

    $list_data = [];
    //循环读取excel表格
    for ($row = 2; $row <= $highestRow; $row++) {
        $list_data[] = [
            'id' => $objPHPExcel->getActiveSheet()->getCell("A" . $row)->getValue(),
            'name' => $objPHPExcel->getActiveSheet()->getCell("B" . $row)->getValue(),
        ];
    }
    
    //针对实际业务需求对导入数据处理 
    //这里保存list_data到数据库
    DbModel::saveAll($list_data);

}

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值