请教各位大大,想将EXCEL导入到MYSQL中,通过SPEARSHEET已经实现,但是这是在excel文件是在服务器上的情况,如何将本地的excel文件直接导入呢?我的想法是,先把文件上传到服务器上,然后导入完再把上传的临时文件删除;不过觉得有点脱了裤子放屁。
求教能不能直接选定本地excel文件,然后直接读取导入到mysql里去。
因为所有数据后期也是以excel文件导入方式输入,所以不考虑使用第三方工具的方法。PS:excel文件内容比较多,直接一条条插入又慢又没效率,通过循环把excel的内容全部插在insert语句后面,效率是提高了,但是好像insert语句的长度有限制,不知道个位大大有没有更好的方法。先谢过了。
求教能不能直接选定本地excel文件,然后直接读取导入到mysql里去。
因为所有数据后期也是以excel文件导入方式输入,所以不考虑使用第三方工具的方法。PS:excel文件内容比较多,直接一条条插入又慢又没效率,通过循环把excel的内容全部插在insert语句后面,效率是提高了,但是好像insert语句的长度有限制,不知道个位大大有没有更好的方法。先谢过了。
这个因果关系是错误的
恰恰是 因为所有数据后期也是以excel文件导入方式输入,所以首要考虑使用第三方工具,而不是php。
优点: 用户方便
缺点: 服务器占用资源大2. 用户手动将xls save as 成 csv, server 解读csv插入或直接 SQL LOAD DATA
优点: 服务器占用资源小
缺点: 用户要多做一个save as工序
先加载你的SPEARSHEET类
$excel = $SPEARSHEET->parse($_FILES['excel']['tmp_name']);
$excel 肯定是一个二维数组:$excel[row][col];
有长度限制,建议一次导入指定数目,这种事情我做过几次,
接下来写个循环了,每N(N是你指定的数目,如果字段比较多建议指定小一点数目)条执行一次INSERT。。
建议一个可以提高效率的办法:先将EXCEL到导出CSV逗号分割格式,再上传CSV,这样可以大大减少EXCEL的体积,使上传速度加快,而且,你就不用SPEARSHEET类来解析EXCEL文件,也大大减少了解释时间,直接用explode()来解析逗号,让数据放到数组里面。再做以上循环。转化过程中注意编码,从EXCEL出来的汉字貌似都是GBK的,如果你程序是UTF的,你要注意转码,要不就老报错。希望对你有用。