R语言中的函数19:openxlsx::read.xlsx(), write.xlsx(), writeData(), writeDataTable()

本文详细介绍了openxlsx库中的read.xlsx()函数用于读取xlsx文件,包括参数设置和实例演示;随后讲解了writeData()和writeDataTable()函数用于数据写入,以及write.xlsx()函数的使用方法和实例。这些函数在数据处理和Excel文件操作中扮演重要角色,适合数据分析和报告编写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

read.xlsx()函数介绍

read.xlsx(
  xlsxFile,
  sheet,
  startRow = 1,
  colNames = TRUE,
  rowNames = FALSE,
  detectDates = FALSE,
  skipEmptyRows = TRUE,
  skipEmptyCols = TRUE,
  rows = NULL,
  cols = NULL,
  check.names = FALSE,
  sep.names = ".",
  namedRegion = NULL,
  na.strings = "NA",
  fillMergedCells = FALSE
)
  • xlsxFile:一个xlsx文件
  • sheet:sheet的名字或者索引
  • startRow:开始读取数据的行,文件前面的空行总是会被跳过并忽略startRow
  • colNames:如果TRUE,数据的第一行就被作为列名使用
  • rowNames:如果TRUE,数据的第一列会被作为行名使用
  • detectDates:如果TRUE,将会尝试识别时间对象
  • skipEmptyRows:如果TRUE, 空行将会跳过,否则数据行之后的空行用NA填充
  • skipEmptyCols:如果TRUE,空列将会跳过
  • rows:接受一个整数向量来指定需要读取的行号,如果是NULL则会读取全部的行
  • cols:接受一个整数向量来指定需要读取的列号,如果是NULL则会读取全部的列
  • check.names:如果TRUE,数据框中的变量名称将会被检查以保证其语法上是正确的
  • sep.names:接受一个字符,用去替代空的列名,默认值为’.’
  • na.strings:指定缺失值的字符串,空的单元格也会被认为是缺失值
  • fillMergedCells:如果TRUE,合并单元格中的值会分配给每一个被合并的单元格内

实例

在这里插入图片描述

writeData()和writeDataTable()函数介绍

writeData(
  wb,
  sheet,
  x,
  startCol = 1,
  startRow = 1,
  array = FALSE,
  xy = NULL,
  colNames = TRUE,
  rowNames = FALSE,
  headerStyle = openxlsx_getOp("headerStyle"),
  borders = openxlsx_getOp("borders", "none"),
  borderColour = openxlsx_getOp("borderColour", "black"),
  borderStyle = openxlsx_getOp("borderStyle", "thin"),
  withFilter = openxlsx_getOp("withFilter", FALSE),
  keepNA = openxlsx_getOp("keepNA", FALSE),
  na.string = openxlsx_getOp("na.string"),
  name = NULL,
  sep = ", ",
  col.names,
  row.names
)

writeDataTable(
  wb,
  sheet,
  x,
  startCol = 1,
  startRow = 1,
  xy = NULL,
  colNames = TRUE,
  rowNames = FALSE,
  tableStyle = openxlsx_getOp("tableStyle", "TableStyleLight9"),
  tableName = NULL,
  headerStyle = openxlsx_getOp("headerStyle"),
  withFilter = openxlsx_getOp("withFilter", TRUE),
  keepNA = openxlsx_getOp("keepNA", FALSE),
  na.string = openxlsx_getOp("na.string"),
  sep = ", ",
  stack = FALSE,
  firstColumn = openxlsx_getOp("firstColumn", FALSE),
  lastColumn = openxlsx_getOp("lastColumn", FALSE),
  bandedRows = openxlsx_getOp("bandedRows", TRUE),
  bandedCols = openxlsx_getOp("bandedCols", FALSE),
  col.names,
  row.names
)
  • wb: A Workbook object containing a worksheet.
  • sheet : The worksheet to write to. Can be the worksheet index or name.
  • x: Object to be written. For classes supported look at the examples.
  • startCol :A vector specifying the starting column to write to.
  • startRow:A vector specifying the starting row to write to.
  • array: A bool if the function written is of type array
  • xy: An alternative to specifying startCol and startRow individually. A vector of the form c(startCol, startRow).
  • colNames: If TRUE, column names of x are written.
  • rowNames : If TRUE, data.frame row names of x are written.
  • headerStyle: Custom style to apply to column names.
  • borders: Either “none” (default), “surrounding”, “columns”, “rows” or respective abbreviations. If “surrounding”, a border is drawn around the data. If “rows”, a surrounding border is drawn with a border around each row. If “columns”, a surrounding border is drawn with a border between each column. If “all” all cell borders are drawn.
  • borderColour :Colour of cell border. A valid colour (belonging to colours() or a hex colour code, eg see here).
  • borderStyle: Border line style
  • withFilter: If TRUE or NA, add filters to the column name row. NOTE can only have one filter per worksheet.
  • keepNA : If TRUE, NA values are converted to #N/A (or na.string, if not NULL) in Excel, else NA cells will be empty.
  • na.string: If not NULL, and if keepNA is TRUE, NA values are converted to this string in Excel.
  • name :If not NULL, a named region is defined.
  • sep: Only applies to list columns. The separator used to collapse list columns to a character vector e.g. sapply(x$list_column, paste, collapse = sep).
  • row.names, col.names: Deprecated, please use rowNames, colNames instead
write.xlsx(x, file,startCol=1,startRow=1, asTable = FALSE, overwrite = TRUE, ...)
  • x :一个data.frame或者list对象,满足可以被writeData()或writeDataTable()写出的要求
  • file: 用于写出xlsx文件的路径
  • startCol:开始写入数据的列
  • startRow:开始写入数据的行
  • asTable: 如果TRUE将调用writeDataTable()否则将调用writeData()写出数据
  • overwrite:如果是TRUE则重写已经存在的文件,默认是TRUE

实例

在这里插入图片描述

## Create Workbook object and add worksheets
mywb <- createWorkbook()

## Add worksheets
addWorksheet(mywb, "Cars")
addWorksheet(mywb, "test")

writeData(wb=mywb,
  sheet='test',
  x=df,
  startCol = 2,
  startRow = 2,
  colNames = TRUE,
  rowNames = TRUE,
  headerStyle = openxlsx_getOp("headerStyle"),
  borders = openxlsx_getOp("borders", "columns"),
  borderColour = openxlsx_getOp("borderColour", "red"),
  borderStyle = openxlsx_getOp("borderStyle", "thin"),
  keepNA=TRUE,
  na.string = '缺失值'
)

## Save workbook
saveWorkbook(mywb, "test.xlsx", overwrite = TRUE)

在这里插入图片描述

write.xlsx()函数介绍

write.xlsx(x, file,startCol=1,startRow=1, asTable = FALSE, overwrite = TRUE, ...)
  • x :一个data.frame或者list对象,满足可以被writeData()或writeDataTable()写出的要求
  • file: 用于写出xlsx文件的路径
  • startCol:开始写入数据的列
  • startRow:开始写入数据的行
  • asTable: 如果TRUE将调用writeDataTable()否则将调用writeData()写出数据
  • overwrite:如果是TRUE则重写已经存在的文件,默认是TRUE

实例

在这里插入图片描述

在这里插入图片描述

### R中使用`read.xlsx`函数报错未找到该函数的解决方案 当在R语言中尝试调用 `read.xlsx` 函数时,如果遇到“未找到该函数”的错误提示,通常可能由以下几个原因引起: #### 1. **缺少必要的包** 如果尚未安装或加载所需的包,则会引发此错误。`read.xlsx` 是 `xlsx` 包中的核心函数之一[^4]。因此,在运行代码之前,需确认已正确安装并加载了 `xlsx` 或其他支持 Excel 文件读取功能的相关包。 安装和加载 `xlsx` 包的方法如下: ```r install.packages("xlsx") # 安装 xlsx 包 library(xlsx) # 加载 xlsx 包 ``` 此外,还可以考虑使用替代方案如 `openxlsx` 包来实现相同的功能[^3]。以下是其安装与加载方法: ```r install.packages("openxlsx") # 安装 openxlsx 包 library(openxlsx) # 加载 openxlsx 包 ``` #### 2. **Java环境配置不完善** `xlsx` 包依赖于 Java 运行环境 (JRE),这意味着用户的计算机上必须已经安装适当版本的 JRE 并将其路径正确配置到系统的环境变量中。如果没有完成这一步骤或者存在兼容性问题,即使成功加载了 `xlsx` 包也可能无法正常使用其中的某些函数。 验证当前系统是否具备所需条件可以通过以下命令执行测试: ```r .jinit() # 初始化 Java 虚拟机 .jclassPath() # 查看可用类库列表 ``` 若上述任一指令失败则表明存在问题需要修复。具体做法可以参照官方文档说明重新设置 JAVA_HOME 参数或将最新版 JDK 下载安装至本地机器后再试一次。 #### 3. **拼写错误或其他语法问题** 另一种常见原因是开发者误输入了错误名称而导致找不到对应定义的情况发生。例如将 “read.xlsx” 错打成 "reaxd.xlsx" 就会产生类似的异常情况。所以仔细核对自己编写的每一句语法规则是非常重要的。 综上所述,要彻底解决这个问题可以从三个方面入手:一是确保目标软件组件已被妥善引入;二是检查外部依赖项是否存在缺失现象;三是排除人为失误因素的影响。只有全面排查以上各环节才能有效定位根本原因进而采取针对性措施加以处理。 ```r # 示例代码展示如何利用 read.xlsxopenxlsx::read.xlsx 来导入Excel文件 library(xlsx) data <- read.xlsx(file="example.xlsx", sheetIndex=1, header=TRUE)[^2] # 使用 Openxlsx 替代方案 library(openxlsx) data_openxlsx <- read.xlsx("example.xlsx", sheet = 1, colNames = TRUE)[^3] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值