1 个回答

代码懒得写了,大概说一下流程吧。

  1. 从表单获取上传文件
  2. 将文件存储到临时目录并且获取文件地址
  3. 通过fopen打开成resource类型,通过fgetcsv从resource中获取单行CSV数据
  4. 将读取的CSV数据数组,按照csv文件列读取内容;例如 [id,名称,性别] => $csv[0];$csv[1];$csv[2];
  5. 组装自己插入数据库的SQL语句;例如INSERT INTO data (id, name, sex) VALUES ("$CSV[0]", $csv[1], $CSV[2])
  6. 执行SQL就可以插入了。

下载CSV文件:

  1. 在控制器获取要下载数据的条件,生成文件名。
  2. 添加响应头:header("Content-Disposition:attachment; filename=$filename");
  3. 通过SQL查询总数与分页大小,计算总页大小进行分页条件查询(最好使用自增主键作为条件),防止一次性读爆数据库。
  4. 循环读取分页数据,一边读数据,一边写数据。写数据用echo implode(',', [$data['id'], $data['name'], $data['sex']])

你可以看一下别人写的代码: PHP对CSV文件的读取、写入、下载操作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题