前言

同在德勤笔试的时候发现这个需求,之前处理数据的时候也遇到过,感觉是很实用的技能,特别研究一下码上来。
网页上简单搜索批量导入excel的方法,目前找到的只有这个链接:
https://www.cnblogs.com/lzllovesyl/p/5170032.html
文章分为三个部分:
1.链接中源代码,读取文件夹下所有子文件夹中的excel文件,并根据分类合并
2.稍加改动后的源代码,读取文件夹下所有子文件夹中的excel文件,切片后汇总
3.进一步改动,读取某文件夹下的所有子文件夹中的excel文件,切片后汇总


1.链接中源代码

作用:读取每个文件夹下的excel,并将其合并成一个文件。

rm(list=ls())                                          #清空工作历史的所有变量
setwd("E:/cnblogs")                                    #设定工作目录【修改】library(xlsx)first_category_name = list.files("APP整理")            #list.files命令得到"APP整理”文件夹下所有文件夹的名称【修改】
dir = paste("./APP整理/",first_category_name,sep="")   #用paste命令构建路径变量dir,第一级目录的详细路径【修改】
n = length(dir)                                       #读取dir长度,也就是:总共有多少个一级目录                                                     n_sub<-rep(0,n)
n_sub<-as.data.frame(n_sub)
n_sub<-t(n_sub)
head(n_sub)                                          #n_sub是每个一级目录(文件夹)下有多少个文件,也就是:有多少个二级目录,初始化为0,用于后面的操作##########
for(i in 1:n){         #对于每个一级目录(文件夹)b=list.files(dir[i]) #b是列出每个一级目录(文件夹)中每个xlsx文件的名称n_sub[i]=length(b)   #得到一级目录(文件夹)下xlsx的文件个数:n_submerge_1<-read.xlsx("E:/cnblogs/APP整理/xlsx文件样例.xlsx",sheetIndex=1,encoding='UTF-8')#dim(merge_1)names(merge_1)<-c('序号','APP','2016-01-11','2016-01-12','2016-01-13','2016-01-14','2016-01-15','2016-01-16','2016-01-17')#我的文件列名,根据你具体情况修改【修改】merge_1$second_category<-'second_category'merge_1$first_category<-'first_category'merge_1<-merge_1[1,-1]    #这一段的目的是读取一个xlsx文件样例,得到一个初始的dataframe(不含数据),免除了后面重新建立datafram的麻烦,用于后面文件的rbind拼接for(j in 1:n_sub[i]){     #对于每个一级目录(文件夹)下的每个xlsx文件new_1<-read.xlsx(file=paste(dir[i],'/',b[j],sep=''),sheetIndex=1,encoding='UTF-8') #读取xlsx文件names(new_1)<-c('序号','APP','2016-01-11','2016-01-12','2016-01-13','2016-01-14','2016-01-15','2016-01-16','2016-01-17')【修改】new_1<-new_1[-1,-1]     #因为实际数据需要,删除第一行和第一列(根据实际读取xlsx文件的情况进行修改)new_1$second_category<-substr(b[j],1,4)        #二级目录的名称是xlsx的文件名。new_1$first_category<-first_category_name[i]   #一级目录的名称是“文件夹名”merge_1<-rbind(merge_1,new_1)}write.xlsx(merge_1,paste(dir[i],'/merge.xlsx',sep=''),row.names = F,col.names= F)#单独保存在每个文件夹下
}

Tips:
1.是否初始化要看具体情况,但是在大多数情况下都是需要的,这里是一种初始化的方法。
2.关于初始文件列名和导入文件列名的设置是可有可无的,可以根据实际情况添加(line 22 & line 29)
3.在初始化时上面代码添加了一级目录和二级目录,后面导入文件后也输入了相关内容,去掉是可以的,还不清楚有什么具体作用还是作者自行需要添加的(line 23-24 & line 31-32)
4.line7中的 ./ 表达: . 代表的是getwd得到的绝对路径。

2.稍加改动后的源代码

作用:读取每个文件夹下的excel,取出其中的某些数据,合成在一个表在每个文件夹里导出。

#改编了上一个程序,跑通了。实现了
rm(list=ls())                                                  #清空工作历史的所有变量
setwd("/Users/ran/Desktop")                                    #设定工作目录library(xlsx)first_category_name = list.files("Task 1")            #list.files命令得到"APP整理”文件夹下所有文件夹的名称
dir = paste("./Task 1/",first_category_name,sep="")   #用paste命令构建路径变量dir,第一级目录的详细路径
n = length(dir)                                       #读取dir长度,也就是:总共有多少个一级目录                                                     n_sub<-rep(0,n)
n_sub<-as.data.frame(n_sub)
n_sub<-t(n_sub)
head(n_sub)                                          #n_sub是每个一级目录(文件夹)下有多少个文件,也就是:有多少个二级目录,初始化为0,用于后面的操作##########
for(i in 1:n){         #对于每个一级目录(文件夹)b=list.files(dir[i]) #b是列出每个一级目录(文件夹)中每个xlsx文件的名称n_sub[i]=length(b)   #得到一级目录(文件夹)下xlsx的文件个数:n_subdata=as.data.frame(rep(0,5))for(j in 1:n_sub[i]){     #对于每个一级目录(文件夹)下的每个xlsx文件new_1<-read.xlsx(file=paste(dir[i],'/',b[j],sep=''),sheetIndex=1,encoding='UTF-8')  #读取xlsx文件new_1<-new_1[10:14,1]     data=cbind(data,new_1)}write.xlsx(data,paste(dir[i],'/merge.xlsx',sep=''),row.names = F,col.names= F)  #单独保存在每个文件夹下
}

3.读取某文件夹中的所有表格

作用:直接获取某文件名下的所有表格,取出其中的某些数据,合成在一个表在文件夹里导出。
Tips:需要手动更改

#试图直接获取某文件名下的所有表格
rm(list=ls())
setwd("/Users/ran/Desktop/Task 1")
library(xlsx)
library(dplyr)
names = list.files("发债")
n_xlsx=length(names)
data=as.data.frame(rep(0,5))
for(j in 1:n_xlsx){     #对于每个一级目录(文件夹)下的每个xlsx文件new_1<-read.xlsx(file=paste('/Users/ran/Desktop/Task 1/发债/',names[j],sep=''),sheetIndex=1,encoding='UTF-8')new_2<-new_1[10:14,1]     data=cbind(data,new_2)
}
write.xlsx(data,'/Users/ran/Desktop/Task 1/发债/结果.xlsx',row.names = F,col.names= F)  #保存在文件夹下

关于R批量导入excel的方法相关推荐

  1. matlab 将txt导入excel,[转载]MATLAB  批量导入excel和txt文件的方法

    将一个文件目录下所有的文件名字全部倒入到一个文件中,除了使用ls函数以外,还可以使用 file=dir('C:UsersAdministratorDesktopMATLAB数据的导入导出以及试验的数据 ...

  2. matlab 批量导入excel,MATLAB  批量导入excel和txt文件的方法

    将一个文件目录下所有的文件名字全部倒入到一个文件中,除了使用ls函数以外,还可以使用 file=dir('C:\Users\Administrator\Desktop\MATLAB数据的导入导出以及试 ...

  3. java操作mysql导表_Java实现批量导入excel表格数据到数据库中的方法

    本文实例讲述了Java实现批量导入excel表格数据到数据库中的方法.分享给大家供大家参考,具体如下: 1.创建导入抽象类 package com.gcloud.common.excel; impor ...

  4. mysql导入多个txt_MySQL批量导入Excel、txt数据

    我想Excel是当今最大众化的批量数据管理软件了吧,所以我们会经常涉及到将Excel中数据导入到MySQL中的工作.网上有一些关于直接将Excel导入MySQL的教程,不知道是我安装的office不对 ...

  5. csv导入mysql phpmyadmin_【转】从phpMyAdmin批量导入Excel内容到MySQL(亲测非常简洁有效)...

    今天做项目遇到需要用phpMyAdmin批量导入Excel内容到MySQL数据库.分析了我的踏坑经历并且总结一最便捷的一套导入数据的方法,非常实用简洁: 1.修改Excel表的数据,使得Excel中的 ...

  6. mysql批量导入txt数据_MySQL批量导入Excel、txt数据

    我想Excel是当今最大众化的批量数据管理软件了吧,所以我们会经常涉及到将Excel中数据导入到MySQL中的工作.网上有一些关于直接将Excel导入MySQL的教程,不知道是我安装的office不对 ...

  7. ExcelToOracle:批量导入Excel文件到Oracle数据库的自动化工具

    ExcelToOracle:批量导入Excel文件到Oracle数据库的自动化工具 简介 ExcelToOracle 是一个可以批量导入excel到数据库(mysql/oracle/sqlserver ...

  8. MySQL批量导入Excel、txt数据

    我想Excel是当今最大众化的批量数据管理软件了吧,所以我们会经常涉及到将Excel中数据导入到MySQL中的工作.网上有一些关于直接将Excel导入MySQL的教程,不知道是我安装的office不对 ...

  9. Android手机免费批量导入Excel姓名手机号码为通讯录联系人

    对于管理人员(辅导员.人力资源或者其他管理人员)来说,批量导入数据是经常需要面对的事情.一个高效率的专业管理人员,需要有高效率的工具.为此,本篇博客将为您提供一个关于在Android手机免费批量导入e ...

最新文章

  1. 日志排查问题困难?分布式日志链路跟踪来帮你
  2. 【机器学习】无监督学习
  3. 动手动脑问题2加课堂练习
  4. 前端学PHP之面向对象系列第六篇——简单图形面积计算器实现
  5. html一个空格多少像素,一个空格占几个字符?
  6. 快速入门Web前端开发的正确姿势
  7. Facebook 又搞事,违反竞业协议被起诉,PyTorch 关键技术疑侵权
  8. 【Shell 脚本】Mysql 定时备份
  9. (IoT物联网)天线的设计步骤 - 完整收藏版
  10. Linux terminal 终端快捷键
  11. Amplify Shader Editor手册
  12. 知其然(3)*.java文件中可以包含多个类,但最多只能有一个类,其修饰符为public
  13. cjk-ext-e 字体
  14. java哪个软件编程好学吗_java编程好学吗?
  15. 使用J-Link打印日志
  16. Kali从入门到出门-手记
  17. Python 统计列表中各元素出现的次数
  18. iphone 手机尺寸_iPhone是新的黑莓手机
  19. html5 获得窗口焦点和失去窗口焦点
  20. office 2003 完全 卸载 工具 来自微软官方

热门文章

  1. BSC链上的智能合约
  2. COMSOL初学案例
  3. 移动硬盘出现“位置不可用无法访问,磁盘结构损坏且无法读取”的解决方法
  4. 信息学奥赛一本通 1372:小明的账单
  5. 操作系统,独木桥问题,PV操作
  6. 14、Fragment
  7. android xutils 上传图片,Android使用xUtils3上传图片报错解决:java.lang.ArrayIndexOutOfBoundsException: 70918...
  8. 计算机科学与技术学科交叉,计算机科学与技术学科方法论.ppt
  9. unity3D编辑器扩展
  10. 学完物联网有哪些就业方向?