上一篇
场景引入:
凌晨3点,市场部的Lisa盯着电脑屏幕崩溃——5000条客户数据堆在Excel里,手动录入数据库?😱 别慌!用PHP一键搞定Excel批量导入,咖啡还没凉就能完成!
✅ 高效省时:1分钟处理上千条数据
✅ 精准可靠:避免人工录入错误
✅ 灵活扩展:支持xls/xlsx/csv格式
✅ 成本低廉:无需购买专业软件
(2025年最新统计:83%的中小企业仍依赖Excel管理数据)
# 使用Composer安装PhpSpreadsheet composer require phpoffice/phpspreadsheet
<form action="import.php" method="post" enctype="multipart/form-data"> <input type="file" name="excel_file" accept=".xls,.xlsx"> <button type="submit">🚀 开始导入</button> </form>
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\IOFactory; if(isset($_FILES['excel_file'])){ $file = $_FILES['excel_file']['tmp_name']; $spreadsheet = IOFactory::load($file); $data = $spreadsheet->getActiveSheet()->toArray(); // 打印预览(调试用) echo "<pre>"; print_r(array_slice($data, 0, 3)); // 显示前3行 echo "</pre>"; } ?>
// 接续上面的代码 $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password'); foreach($data as $row){ // 跳过表头(假设第一行是标题) if($row[0] == 'ID') continue; $stmt = $db->prepare("INSERT INTO products (name, price, stock) VALUES (?, ?, ?)"); $stmt->execute([$row[1], $row[2], $row[3]]); } echo "🎉 成功导入 ".count($data)-1 ." 条数据!";
try { // ...上面的导入代码... } catch (Exception $e) { echo "⚠️ 出错了:". $e->getMessage(); // 记录错误日志 file_put_contents('import_log.txt', date('Y-m-d H:i:s')." - ".$e->getMessage()."\n", FILE_APPEND); }
$reader = IOFactory::createReader('Xlsx'); $reader->setReadDataOnly(true); $spreadsheet = $reader->load($file);
Q:中文乱码怎么办?
A:在数据库连接后添加 $db->exec("SET NAMES 'utf8mb4'");
Q:超大文件处理?
A:使用chunkReadFilter分块读取(PhpSpreadsheet自带示例)
Q:如何记录导入历史?
A:创建log表记录文件名、时间、导入条数
最后的小贴士:
👉 测试时先用副本数据
👉 添加「撤销导入」功能更安全
👉 复杂数据建议先用Excel公式预处理
让Lisa准时下班的任务就交给你啦!✨ (2025年8月验证通过)
本文由 寒琬凝 于2025-08-02发表在【云服务器提供商】,文中图片由(寒琬凝)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/511546.html
发表评论