使用 PHP 导入 Excel 文件并实现电子表格共享 (php导入)

安装

使用 Composer 安装 PHPSpreadSheet:

composer require phpoffice/phpspreadsheet

基本用法

下面的示例演示了如何使用 PHPSpreadSheet 创建一个简单的电子表格:

使用 PHP 导入 Excel 文件并实现电子表格共享 (php导入)<?php
declare(strict_types=1);

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

// 创建一个新的电子表格
$spreadsheet = new Spreadsheet;

// 获取活动单元格
$sheet = $spreadsheet->getActiveSheet;

// 设置单元格 A1 的值
$sheet->setCellValue('A1', '项目名称');

// 设置 A 列的列宽
$sheet->getColumnDimension('A')->setWidth(100);

// 设置第一行的高度
$sheet->getRowDimension(1)->setRowHeight(20);

// 设置单元格 B1 的值
$sheet->setCellValue('B1', '操作人');

// 设置 B 列的列宽
$sheet->getColumnDimension('B')->setWidth(20);

// 设置单元格 C1 的值
$sheet->setCellValue('C1', '检测量');

// 设置 C 列的列宽
$sheet->getColumnDimension('C')->setWidth(10);

// 设置标题样式
$titleStyle = [
    'alignment' => [
        'horizontal' => 'center',
        'vertical' => 'center',
    ],
    'font' => [
        'name' => '黑体',
        'bold' => false,
        'size' => 10,
    ],
];

// 设置正文样式
$bodyStyle = [
    'alignment' => [
        'horizontal' => 'left',
        'vertical' => 'center',
    ],
    'font' => [
        'name' => '微软雅黑',
        'bold' => false,
        'size' => 10,
    ],
];

// 设置 A1 单元格的标题样式
$sheet->getStyle('A1')->applyFromArray($titleStyle);

// 设置 B1 单元格的标题样式
$sheet->getStyle('B1')->applyFromArray($titleStyle);

// 设置 C1 单元格的标题样式
$sheet->getStyle('C1')->applyFromArray($titleStyle);

// 创建一个 Writer 实例
$writer = new Xlsx($spreadsheet);

// 保存电子表格到文件
$writer->save('export.xlsx');

导出数据

下面的示例演示了如何使用 PHPSpreadSheet 从数据库中导出数据到电子表格:

<?php
declare(strict_types=1);

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

// 查询要导出的数据
$data = Db::query('select project, price from xiangmu');

// 创建一个新的电子表格
$spreadsheet = new Spreadsheet;

// 获取活动单元格
$sheet = $spreadsheet->getActiveSheet;

// 设置单元格 A1 的值
$sheet->setCellValue('A1', '项目名称');

// 设置 A 列的列宽
$sheet->getColumnDimension('A')->setWidth(100);

// 设置第一行的高度
$sheet->getRowDimension(1)->setRowHeight(20);

// 设置单元格 B1 的值
$sheet->setCellValue('B1', '操作人');

// 设置 B 列的列宽
$sheet->getColumnDimension('B')->setWidth(20);

// 设置单元格 C1 的值
$sheet->setCellValue('C1', '检测量');

// 设置 C 列的列宽
$sheet->getColumnDimension('C')->setWidth(10);

// 设置标题样式
$titleStyle = [
    'alignment' => [
        'horizontal' => 'center',
        'vertical' => 'center',
    ],
    'font' => [
        'name' => '黑体',
        'bold' => false,
        'size' => 10,
    ],
];

// 设置正文样式
$bodyStyle = [
    'alignment' => [
        'horizontal' => 'left',
        'vertical' => 'center',
    ],
    'font' => [
        'name' => '微软雅黑',
        'bold' => false,
        'size' => 10,
    ],
];

// 设置 A1 单元格的标题样式
$sheet->getStyle('A1')->applyFromArray($titleStyle);

// 设置 B1 单元格的标题样式
$sheet->getStyle('B1')->applyFromArray($titleStyle);

// 设置 C1 单元格的标题样式
$sheet->getStyle('C1')->applyFromArray($titleStyle);

// 将数据写入电子表格
$i = 2;
foreach ($data as $row) {
    $sheet->setCellValue('A' . $i, $row['project']);
    $sheet->setCellValue('B' . $i, $row['price']);
    $i++;
}

// 创建一个 Writer 实例
$writer = new Xlsx($spreadsheet);

// 保存电子表格到文件
$writer->save('export.xlsx');

导入数据

下面的示例演示了如何使用 PHPSpreadSheet 从电子表格中导入数据到数据库:

<?php
declare(strict_types=1);

use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;

// 获取电子表格文件
$file = request->file('file');

// 加载电子表格
$spreadsheet = IOFactory::load($file);

// 获取活动单元格
$sheet = $spreadsheet->getActiveSheet;

// 获取数据范围
$range = $sheet-&>calculateWorksheetDimension;

// 逐行读取数据
for ($i = 2; $i <= $range-&>getRow; $i++) {
    $project = $sheet-&>getCell('A' . $i)-&>getValue;
    $price = $sheet-&>getCell('B' . $i)-&>getValue;

    // 将数据插入数据库
    Db::insert('xiangmu', ['project' =&> $project, 'price' =&> $price]);
}

总结

这就是 PHPSpreadSheet的基本用法。更多信息,请参考官方文档:

www.tstingmi.com 提供内容。