V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ZXCDFGTYU
V2EX  ›  PHP

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

  •  
  •   ZXCDFGTYU · 2017-05-22 12:04:46 +08:00 · 3631 次点击
    这是一个创建于 2750 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    17 条回复    2017-05-22 17:34:40 +08:00
    onlyhot
        1
    onlyhot  
       2017-05-22 12:10:40 +08:00 via iPhone
    每条数据对应图片名称或者图片 id
    lsido
        2
    lsido  
       2017-05-22 12:45:40 +08:00 via Android
    xlsx 数据发一部分,图片在什么位置
    ZXCDFGTYU
        3
    ZXCDFGTYU  
    OP
       2017-05-22 13:03:53 +08:00
    @lsido 照片通过 Excel2013 的 插入选项卡-图片插入
    ![xlsx 截图]( https://ooo.0o0.ooo/2017/05/22/592271066a6f6.png)
    ZXCDFGTYU
        4
    ZXCDFGTYU  
    OP
       2017-05-22 13:14:37 +08:00
    @onlyhot 这玩意是给运营部门用的,想做的尽量简单点
    laobaozi
        5
    laobaozi  
       2017-05-22 13:25:03 +08:00
    信息和图片分开导
    信息直接 insert into 注意上传文件 id 和路径
    图片直接移动到对应的目录就 OK
    yumijie
        6
    yumijie  
       2017-05-22 13:33:36 +08:00
    csv 可以直接导入
    ZXCDFGTYU
        7
    ZXCDFGTYU  
    OP
       2017-05-22 13:44:38 +08:00
    @yumijie 貌似 CSV 不支持图片?
    yumijie
        8
    yumijie  
       2017-05-22 13:58:23 +08:00
    @ZXCDFGTYU 图片也导入到 mysql?
    rxzxf1993
        9
    rxzxf1993  
       2017-05-22 15:06:38 +08:00
    导入的时候 把图片先传到服务器 或者某平台 然后 存表
    JKeita
        10
    JKeita  
       2017-05-22 15:37:14 +08:00
    看看读取图片是不是顺序读取,如果是的话,处理的时候,分成两个数组,一个数组存放基础信息,一个数组存放图片上传后的路径,因为是有序的,所有数组的数字索引是相对应的
    ZXCDFGTYU
        11
    ZXCDFGTYU  
    OP
       2017-05-22 16:16:24 +08:00
    @yumijie 图片不进 mysql,路径进去,但是图片的文件名上传以后会变,而且是随机定长字符串值
    ZXCDFGTYU
        12
    ZXCDFGTYU  
    OP
       2017-05-22 16:18:16 +08:00
    刚才关于这个问题请示了一下领导,领导说做毛批量导入,一个一个添加就行 2333,此处愉快结帖,再次感谢各位提出的意见和想法,万分感谢!
    reus
        13
    reus  
       2017-05-22 16:27:18 +08:00
    才几百条,一分钟一条够不够?一天可以输入多少条?
    fuxkcsdn
        14
    fuxkcsdn  
       2017-05-22 16:29:41 +08:00 via iPhone
    @ZXCDFGTYU 本来就是这样最快,才 200+数据,而且看着不像经常需要用的功能,随便找 1,2 个文员,顶多半天搞定
    Mitt
        15
    Mitt  
       2017-05-22 17:24:18 +08:00
    你是愿意花 2 个小时手工录入还是愿意花 3 个小时写个自动导入, 我选后者,前者不是程序员该干的活
    alexzhou
        16
    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
        17
    alexzhou  
       2017-05-22 17:34:40 +08:00
    其实你把 xlsx 文件拓展名改成 .zip 解压后你会发现 通过读取 xml 会获得对应的图片 ,而图片也在一个特定目录里面放着
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   923 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:04 · PVG 04:04 · LAX 12:04 · JFK 15:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.