兰州市新闻头条,海口网站建设方案优化,效果好的徐州网站建设,个人注册公司的利与弊主要用到了 xlsx 和 rJava 包#xff0c;打开 Excel 文件#xff0c;读取各表格数据#xff0c;再写入到汇总表。
下图为处理前的原始数据表格#xff1a; 下图为处理后的数据#xff1a; 代码实现
安装加载包的函数实现。installed.packages() 函数获取所有已安装…主要用到了 xlsx 和 rJava 包打开 Excel 文件读取各表格数据再写入到汇总表。
下图为处理前的原始数据表格 下图为处理后的数据 代码实现
安装加载包的函数实现。installed.packages() 函数获取所有已安装的包用以排除已安装的包。install.packages() 函数安装指定的包。library() 加载引入包。 loadLibrary - function(pkgs) {uninstalledPkgs - pkgs[!(pkgs %in% installed.packages()[, Package])]if (length(uninstalledPkgs)) {install.packages(uninstalledPkgs)}for (pkg in pkgs) {library(pkg, character.only TRUE, quietly TRUE)}
}
自定义设置。涉及表格文件路径、汇总表名等。 setwd(/path/to/work/dir) # 工作目录
fileName summary_sheet_demo.xlsx # 处理的表格文件
summaryName 汇总 # 汇总的 sheet 表名
summarySheet FALSE # 对象变量、忽略
startRow 2 # 汇总表中操作起始行
设置 CRAN 源。官方默认源可能比较慢所以选择国内的源很重要。此处选择了清华 CRAN 源其他的可参考 CRAN Mirrors。 options(repos https://mirrors.tuna.tsinghua.edu.cn/CRAN/)
加载依赖包。用到了上述写的安装加载包的函数。 loadLibrary(c(xlsx, rJava))
打开工作表。loadWorkbook() 打开指定路径的表格文件并加载到工作簿对象中。 wb - loadWorkbook(fileName)
遍历查询汇总数据。 # 获取所有表格
sheets - getSheets(wb)# 循环所有表格找出需要写入的表
for (sheet in sheets) {sheetName - sheet$getSheetName()if (sheetName summaryName) {summarySheet - sheet}
}if (summarySheet FALSE) {stop(paste(表:, summaryName, 未找到))
}# 指定Date格式(此处可忽略)
# options(xlsx.date.formatyyyy/MM/dd)# 遍历所有表格
for (sheet in sheets) {# 过滤掉需写入的表sheetName - sheet$getSheetName()if (sheetName summaryName) {next}# 获取表格【内容行数】rowNum - sheet$getLastRowNum()print(paste(表名:, sheetName, 总共:, rowNum, 行,, sep ))# 读取表格内容 参数 colClasses 指定每列的类型(实际是指定处理该列的类/对象)data - read.xlsx2(fileName, sheetName sheetName, header FALSE, startRow 2, colClasses c(character, Date, integer, integer, rep(numeric, 2), integer))print(data)# 将表格内容写入汇总的那张表addDataFrame(data, summarySheet, col.names FALSE, row.names FALSE, startRow startRow)# 累加行数startRow - startRow rowNum
}
把对象内容写入文件中保存。 saveWorkbook(wb, fileName)
完整代码 # 包加载/安装包
loadLibrary - function(pkgs) {uninstalledPkgs - pkgs[!(pkgs %in% installed.packages()[, Package])]if (length(uninstalledPkgs)) {install.packages(uninstalledPkgs)}for (pkg in pkgs) {library(pkg, character.only TRUE, quietly TRUE)}
}# 自定义配置
setwd(/path/to/work/dir) # 工作目录
fileName summary_sheet_demo.xlsx # 处理的表格文件
summaryName 汇总 # 汇总的 sheet 表名
summarySheet FALSE # 对象变量、忽略
startRow 2 # 汇总表中操作起始行# 设置CRAN
options(repos https://mirrors.tuna.tsinghua.edu.cn/CRAN/)# 加载依赖包
loadLibrary(c(xlsx, rJava))# 打开Excel表格
wb - loadWorkbook(fileName)
# 获取所有表格
sheets - getSheets(wb)# 循环所有表格找出需要写入的表
for (sheet in sheets) {sheetName - sheet$getSheetName()if (sheetName summaryName) {summarySheet - sheet}
}if (summarySheet FALSE) {stop(paste(表:, summaryName, 未找到))
}# 指定Date格式(此处可忽略)
# options(xlsx.date.formatyyyy/MM/dd)# 遍历所有表格
for (sheet in sheets) {# 过滤掉需写入的表sheetName - sheet$getSheetName()if (sheetName summaryName) {next}# 获取表格【内容行数】rowNum - sheet$getLastRowNum()print(paste(表名:, sheetName, 总共:, rowNum, 行,, sep ))# 读取表格内容 参数 colClasses 指定每列的类型(实际是指定处理该列的类/对象)data - read.xlsx2(fileName, sheetName sheetName, header FALSE, startRow 2, colClasses c(character, Date, integer, integer, rep(numeric, 2), integer))print(data)# 将表格内容写入汇总的那张表addDataFrame(data, summarySheet, col.names FALSE, row.names FALSE, startRow startRow)# 累加行数startRow - startRow rowNum
}# 最后需要把对象内容写入文件中
saveWorkbook(wb, fileName)
表格附件
summary_sheet_demo.xlsx