ThinkPHP 是一个流行的 PHP 开发框架,提供了丰富的功能和组件,方便开发者快速构建 Web 应用程序。导入导出 Excel 是 Web 开发中常见的需求,通常用于数据的导入和导出操作。
use think\facade\Db;
use PhpOffice\PhpSpreadsheet\IOFactory;
// 读取 Excel 文件
$inputFileName = './excels/data.xlsx';
$spreadsheet = IOFactory::load($inputFileName);
$worksheet = $spreadsheet->getActiveSheet();
// 获取数据并插入数据库
$data = [];
foreach ($worksheet->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$rowData = [];
foreach ($cellIterator as $cell) {
$rowData[] = $cell->getValue();
}
$data[] = $rowData;
}
// 插入数据库
Db::name('table_name')->insertAll($data);
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
// 获取数据
$data = Db::name('table_name')->select();
// 创建 Excel 对象
$spreadsheet = new Spreadsheet();
$worksheet = $spreadsheet->getActiveSheet();
// 写入数据
foreach ($data as $rowIndex => $row) {
foreach ($row as $colIndex => $cellValue) {
$worksheet->setCellValueByColumnAndRow($colIndex + 1, $rowIndex + 1, $cellValue);
}
}
// 导出 Excel 文件
$writer = new Xlsx($spreadsheet);
$writer->save('./excels/output.xlsx');
原因:可能是文件编码问题或读取方式不正确。
解决方法:
$spreadsheet = IOFactory::load($inputFileName, 'Xlsx');
确保文件编码为 UTF-8,并在读取时指定正确的格式。
原因:可能是数据量过大或写入方式不正确。
解决方法:
$writer = new Xlsx($spreadsheet);
$writer->setSheetIndex(0);
$writer->save('./excels/output.xlsx');
确保数据量在处理能力范围内,并正确设置写入方式。
通过以上方法,可以有效解决 ThinkPHP 导入导出 Excel 文件时遇到的常见问题。
领取专属 10元无门槛券
手把手带您无忧上云