操作:
1.下载PhpSpreadsheet类库 下载地址:github 官方 PhpSpreadsheet
或者使用composer 命令 下载
composer require phpoffice/phpspreadsheet
2.编写PHP代码
<?php
# 载入composer自动加载文件
require 'PhpSpreadSheet/vendor/autoload.php';
# 给类文件的命名空间起个别名
use PhpOffice\PhpSpreadsheet\Spreadsheet;
# Xlsx类 将电子表格保存到文件
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$serve = 'localhost:3306';
$username = 'root';
$password = '123456';
$dbname = 'table';
$mysqli = new Mysqli($serve, $username, $password, $dbname);
if($mysqli->connect_error){
die('connect error:' . $mysqli->connect_errno);
}
$mysqli->set_charset('UTF-8'); // 设置数据库字符集
$result = $mysqli->query('select * from users');
$data = $result->fetch_all(); // 从结果集中获取所有数据,得到一个二维数组
//print_r($data);
dataToExcel($data);
function dataToExcel($data){
# 实例化 Spreadsheet 对象
$spreadsheet = new Spreadsheet();
# 获取活动工作薄
$sheet = $spreadsheet->getActiveSheet();
$sheet->getColumnDimension('C')->setWidth(30); // 设置某一列的宽度
# 获取单元格 并为其赋值
$sheet -> getCell('A1')->setValue("id"); // 设置每列代表的属性
$sheet -> getCell('B1')->setValue("用户名");
$sheet -> getCell('C1')->setValue("密码");
$sheet -> getCell('D1')->setValue("角色");
foreach ($data as $key => $v) {
# code...
$key += 2; // 从第二行开始
$sheet->getCell('A'. $key)->setValue($v[0]); // 循环为其赋值
$sheet->getCell('B'. $key)->setValue($v[1]);
$sheet->getStyle('B'. $key)->getFont()->getColor()->setARGB('FFFF0000'); // 设置样式
$sheet->getCell('C'. $key)->setValue($v[2]);
$sheet->getCell('D'. $key)->setValue($v[3]);
}
$writer = new Xlsx($spreadsheet);
$writer->save('users'.time().".xlsx"); // 生成Excel表
}
echo "生成Excel表完成";
?>