[BD] 使用PhpSpreadsheet进行文件导入

97 阅读1分钟

把方法直接写在公共父级控制器

composer require phpoffice/phpspreadsheet

use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;

public function import_excel()
{
    $file = request()->file('file');
    if(empty($file)){
        return [];
    }
    // 移动到框架应用根目录/storage/public 目录下,并修改文件名为时间戳
    // $savename = \think\facade\Filesystem::disk('public')->putFile('files', $file, 'time');
    $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
    $spreadsheet = $reader->load($file);
    $worksheet = $spreadsheet->getActiveSheet();
    $highestRow = $worksheet->getHighestRow();
    $highestColumn = $worksheet->getHighestColumn();
    $data = [];
    for ($row = 1; $row <= $highestRow; $row++) {
        for ($column = 'A'; $column <= $highestColumn; $column++) {
            $data[$row][$column] = $worksheet->getCell($column . $row)->getValue();
        }
    }
    $list = [];
    foreach ($data as $item) {
        $list[] = array_values($item);
    }
    return $list;
}