有没有什么可以用 PHP 实现的批量数据导入方法

2017-05-22 12:04:46 +08:00
 ZXCDFGTYU

现在遇到一个需求,要求批量导入员工数据。

其结构为: 员工照片员工姓名员工职位所属公司

并且 一个员工只允许一张员工照片一个员工属于一个公司一个员工只允许一个职位

目标数据量有 200+,如果全部手工单条录入就太麻烦了。。现在需要使用 php 实现此数据的批量导入到数据库并在前台展示。

之前试过使用 PHPExcel 读取 xlsx 表格文件实现,但是在 xlsx 中图片不属于任何一个单元格,无法确定员工照片和员工的对应关系。。

希望各位能给帮忙给个思路,万分感谢!

3478 次点击
所在节点    PHP
17 条回复
onlyhot
2017-05-22 12:10:40 +08:00
每条数据对应图片名称或者图片 id
lsido
2017-05-22 12:45:40 +08:00
xlsx 数据发一部分,图片在什么位置
ZXCDFGTYU
2017-05-22 13:03:53 +08:00
@lsido 照片通过 Excel2013 的 插入选项卡-图片插入
![xlsx 截图]( https://ooo.0o0.ooo/2017/05/22/592271066a6f6.png)
ZXCDFGTYU
2017-05-22 13:14:37 +08:00
@onlyhot 这玩意是给运营部门用的,想做的尽量简单点
laobaozi
2017-05-22 13:25:03 +08:00
信息和图片分开导
信息直接 insert into 注意上传文件 id 和路径
图片直接移动到对应的目录就 OK
yumijie
2017-05-22 13:33:36 +08:00
csv 可以直接导入
ZXCDFGTYU
2017-05-22 13:44:38 +08:00
@yumijie 貌似 CSV 不支持图片?
yumijie
2017-05-22 13:58:23 +08:00
@ZXCDFGTYU 图片也导入到 mysql?
rxzxf1993
2017-05-22 15:06:38 +08:00
导入的时候 把图片先传到服务器 或者某平台 然后 存表
JKeita
2017-05-22 15:37:14 +08:00
看看读取图片是不是顺序读取,如果是的话,处理的时候,分成两个数组,一个数组存放基础信息,一个数组存放图片上传后的路径,因为是有序的,所有数组的数字索引是相对应的
ZXCDFGTYU
2017-05-22 16:16:24 +08:00
@yumijie 图片不进 mysql,路径进去,但是图片的文件名上传以后会变,而且是随机定长字符串值
ZXCDFGTYU
2017-05-22 16:18:16 +08:00
刚才关于这个问题请示了一下领导,领导说做毛批量导入,一个一个添加就行 2333,此处愉快结帖,再次感谢各位提出的意见和想法,万分感谢!
reus
2017-05-22 16:27:18 +08:00
才几百条,一分钟一条够不够?一天可以输入多少条?
fuxkcsdn
2017-05-22 16:29:41 +08:00
@ZXCDFGTYU 本来就是这样最快,才 200+数据,而且看着不像经常需要用的功能,随便找 1,2 个文员,顶多半天搞定
Mitt
2017-05-22 17:24:18 +08:00
你是愿意花 2 个小时手工录入还是愿意花 3 个小时写个自动导入, 我选后者,前者不是程序员该干的活
alexzhou
2017-05-22 17:30:45 +08:00
随手 google
http://www.walkswithme.net/reading-images-from-excel-sheet-using-phpexcel

```php

$xlsFile = 'sample.xlsx';
require_once 'PHPExcel/Reader/Excel2007.php';
$objReader = new PHPExcel_Reader_Excel2007();
//$objReader->setReadDataOnly(true);
$data = $objReader->load($xlsFile);
$objWorksheet = $data->getActiveSheet();
foreach ($objWorksheet->getDrawingCollection() as $drawing) {
//for XLSX format
$string = $drawing->getCoordinates();
$coordinate = PHPExcel_Cell::coordinateFromString($string);
if ($drawing instanceof PHPExcel_Worksheet_Drawing){
$filename = $drawing->getPath();
$drawing->getDescription();
copy($filename, 'uploads/' . $drawing->getDescription());
}}


````
alexzhou
2017-05-22 17:34:40 +08:00
其实你把 xlsx 文件拓展名改成 .zip 解压后你会发现 通过读取 xml 会获得对应的图片 ,而图片也在一个特定目录里面放着

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/362924

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX