R 脚本读取汇总 Excel 表格数据

 主要用到了 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.format='yyyy/MM/dd')  # 遍历所有表格 for (sheet in sheets) {     
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信