导入导出excel

安装插件

composer require phpoffice/phpspreadsheet

控制器引入插件

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

导出excel并下载

# 实例化 Spreadsheet 对象
$spreadsheet = new Spreadsheet();
# 获取活动工作薄
$sheet = $spreadsheet->getActiveSheet();

# 赋值
$sheet->setCellValue('A1','10');
$sheet->setCellValue('B1','15');
$sheet->setCellValue('C1','20');

$sheet->setCellValue('A2', '总数:');
# 公式,SUM(A1:C1),就是计算A1到C1的合
$sheet->setCellValue('B2', '=SUM(A1:C1)');
        
# 行列
$num = 4;
// 批量赋值
$sheet->setCellValue('A3','ID');
$sheet->setCellValue('B3','姓名');
$sheet->setCellValue('C3','年龄');
$sheet->setCellValue('D3','身高');
$sheet->fromArray(
     [
           [1,'欧阳克','18岁','188cm'],
           [2,'黄蓉','17岁','165cm'],
           [3,'郭靖','21岁','180cm']
      ],
      $num,      # 数组索引,索引几,不显示几,比如3,则不显示郭靖的ID,因此,本参数和下面的参数,尽量值一样
      "B{$num}"    # 数据从哪列哪行开始打印,比如B3就是从B列的第3行开始
);
// 合并单元格 合并A1到B1后赋值,赋值只能给A1,开始的坐标。
$sheet->mergeCells('A1:B1');
$sheet->getCell('A1')->setValue('欧阳克');
        
# Xlsx类 将电子表格保存到文件
# 文件名
$typeName = "demo";
$writer = new Xlsx($spreadsheet);
$writer->save("{$typeName}.xlsx");
        
 // 客户端文件下载
header('Content-Type:application/vnd.ms-excel');
header("Content-Disposition:attachment;filename={$typeName}.xls");
header('Cache-Control:max-age=0');
$writer = IOFactory::createWriter($spreadsheet, 'Xls');
$writer->save('php://output');

导入excel

# 注,excel格式需为.xlsx,若不是,另存为一下即可
$uploadfile    = 'F:\gongsi\__weiting_think\public\1.xlsx';

$reader        = IOFactory::createReader('Xlsx');
$PHPExcel      = $reader->load($uploadfile); // 载入excel文件
$sheet         = $PHPExcel->getSheet(0); // 读取第一個工作表
$highestRow    = $sheet->getHighestRow(); // 取得总行数
$highestColumm = $sheet->getHighestColumn(); // 取得总列数,从A开始

$data          = [];
for ($row = 1; $row <= $highestRow; $row++) //行号从1开始
{
    $data[$row]["A{$row}"] = $sheet->getCellByColumnAndRow(1,$row)->getValue();
    $data[$row]["B{$row}"] = $sheet->getCellByColumnAndRow(2,$row)->getValue();
    $data[$row]["C{$row}"] = $sheet->getCellByColumnAndRow(3,$row)->getValue();
}
dump($data);

获取excel后的结果:

array:11 [▼
  1 => array:3 [▼
    "A1" => "为了避免被母体发现,叶凡没有... ▶"
    "B1" => "叶凡找到空间压缩球,并进入其中... ▶"
    "C1" => "秦灵云一现身,就将三大邪神之一,... ▶"
  ]
  2 => array:3 [▼
    "A2" => "其它联盟,得知冰地联盟作为,纷...▶"
    "B2" => "叶凡称,你要全力一战,尚有取胜机...▶"
    "C2" => "叶凡与宇宙之主的投影见面,得知世界正... ▶"
  ]
]

给TA买糖
共{{data.count}}人
人已赞赏
Mysql

清空表且主键从0开始

2021-4-21 11:25:30

tp6-插件

云对象储存

2021-4-21 19:11:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索