时间:2021-05-20
之前写过一个循环读取excel的代码,最近又有了新的需求:循环读取xlsx文件中的多个sheet,处理完之后循环输出到xlsx文件中的多个sheet中,总结一下。
有了这段代码,要循环读取xlsx里面的多个sheet就简单多了,毕竟xlsx的文件名都是一致的,只是sheetIndex不一样:
下面这面这段代码是抄来的,还没来得及尝试能不能循环写入sheet了。
今天尝试了第3部分的代码,发现循环写入的功能无法实现,于是使用openxlsx包解决该问题。
首先按照网上的教程安装了openxlsx,并进行了实验:
library(openxlsx) wb <- createWorkbook() addWorksheet(wb, "Sheet 1") c1 <- createComment(comment = "this is comment") writeComment(wb, 1, col = "B", row = 10, comment = c1) s1 <- createStyle(fontSize = 12, fontColour = "red", textDecoration = c("BOLD")) s2 <- createStyle(fontSize = 9, fontColour = "black") c2 <- createComment(comment = c("This Part Bold red\n\n", "This part black"), style = c(s1, s2)) c2 writeComment(wb, 1, col = 6 , row = 3, comment = c2) addWorksheet(wb, "Sheet 1") saveWorkbook(wb, file = "E:/信和资料/项目/门店绩效/湖南益阳/writeCommentExample.xlsx", overwrite = TRUE)但在最后保存时报错,因为是在windows环境下,保存时提示安装Rtools,windows系统下安装完成后,需要添加系统变量D:\Rtools\bin;D:\Rtools\gcc-4.6.3\bin,添加完成后,重启电脑,发现保存成功。
下面,需要循环将多个sheet写入xlsx文件中:
wb <- createWorkbook()addWorksheet(wb,"xsjshouru12")addWorksheet(wb, "xsjshouru18")addWorksheet(wb, "xsjshouru24")addWorksheet(wb, "xsjshouru36")writeData(wb,"xsjshouru12",xsjshouru12)writeData(wb,"xsjshouru18",xsjshouru18)writeData(wb,"xsjshouru24",xsjshouru24)writeData(wb,"xsjshouru36",xsjshouru36)#保存到本地文件saveWorkbook(wb,file = "E:/信和资料/项目/门店绩效/湖南益阳/薪水借.xlsx", overwrite = TRUE)读入数据:
files = list.files(pattern='*.Rdata')fload = lapply(files, function(x) get(load(x)))合并多个数据框
edata4 <- Reduce(function(x,y) merge(x = x, y = y, by = c('lon','lat')),list(dtr01, dtr02, dtr03))补充:R语言:批量循环读取一系列excel文件
例如有20个excel文件分别代表20个亚组的数据,文件名为亚组名P01-P20,每个文件中的变量个数和名称等都是相同的,可通过以下命令实现一次性读取20个excel,并生成一个新变量提示来自哪个亚组(同时展示如何读取每个excel第二列数据的前11个字符生成一个新变量id)。
读取excel文件先要安装package: XLConnect:
install.packages(XLConnect)library(XLConnect)生成代表亚组名称的新变量和第二列前11个字符的新变量:
temp<-list.files(pattern="*.xls") //生成一个新变量temp代表文件路径中所有后缀为xls的文件的文件名head(temp)a=readWorksheetFromFile(temp[1],sheet=1) //读取temp1号excel即P01,命名为数据库aa$plate=substr(as.character(temp[1]),1,3) //生成变量plate,数值为temp里的plate名称(字符1到3)a$id=substr(a[,2],1,11) //生成变量id, 值为第二列数据的前11个字符ncol(a) //看看a有多少个变量,新生成的plate和id变量为最后两个,假设为第58和59个变量write.table(a[,c(58,59)],file = "newfile.txt",row.names=F, na="",col.names=FALSE, sep=" ",append = T,quote=F) //生成txt文件newfile.txt为p01文件中的plate和id,展示如下对P02-20写一个for循环语句,导入进去即可
for (i in 2: length(temp)){ newfile=read.table("newfile.txt") b=readWorksheetFromFile(temp[i],sheet=1) b$row=substr(as.character(temp[i]),1,3) b$extract=substr(b[,2],1,11) write.table(b[,c(58,59)],file = "newfile.txt",row.names=F, na="",col.names=FALSE, sep=" ",append = T,quote=F)}命令翻译:对每一个i值,i从2到temp的最大值之间取值,生成一个文件newfile=之前P01的txt文件,下面四行是重复上面生成P01file的过程。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Android开发实现读取excel数据并保存为xml的方法。分享给大家供大家参考,具体如下:前阵子,公司请外面人翻译了一些android中val
execl表格出现乱码的解决方法是使用记事本打开CSV文件后另存为,将文件保存为ansi编码格式并保存,再用EXCEL打开文件,乱码就消失了。 记事本,在日常
我下载的文件保存位置比较固定,但每次打开另存为对话框时,总要重新选择保存为位置,真是麻烦。其实保存位置也同样可以修改,下面小编就为大家详细介绍在excel中如何
使用现有的txt文本和图片,就可以用wordcloud包生成词云图。大致步骤是:1、读取txt文本并简单处理;2、读取图片,以用作背景;3、生成词云对象,保存为
分别保存下面两段代码,一个保存为readxml.asp另一个保存为test.xml,放在同一个目录下面,调试程序即可,在程序里面已经做了解释,读取代码可以做