R -> xlsx包(2)

以下内容是对xlsx包的说明文档的整理:xlsx包说明文档

除了 R -> xlsx包(1)中的关于七种对象(workbook,sheet,row,cell,cellstyle,cellcomment,cellblock)的操作函数外,xlsx包还提供了一些别的函数:

  1. 读取(read)和写入(write)相关的函数
  2. 其它的对excel进行操作的函数

读取(read)和写入(write)相关的函数

read和write都没有对excel进行操作,而是提供了excel和R的data.frame之间的相互转换。

read相关的函数
read.xlsx(file, sheetIndex, sheetName = NULL, rowIndex = NULL, 
          startRow = NULL, endRow = NULL, colIndex = NULL,
          as.data.frame = TRUE, header = TRUE, colClasses = NA,
          keepFormulas = FALSE, encoding = "unknown", password = NULL, ...)

read.xlsx2(file, sheetIndex, sheetName = NULL, startRow = 1, colIndex = NULL,
           endRow = NULL, as.data.frame = TRUE, header = TRUE, 
           colClasses = "character", password = NULL, ...)

readColumns(sheet, startColumn, endColumn, startRow, endRow = NULL,
            as.data.frame = TRUE, header = TRUE, colClasses = NA, ...)

readRows(sheet, startRow, endRow, startColumn, endColumn = NULL)

说明:

  • 前两个函数将excel读入转换成dataframe,后两个函数读入sheet中的行或列转换成datframe
  • readRows返回的是一个矩阵,这个函数感觉完全能被readColumns取代,不明白存在的意义是什么
  • colClasses:为NA时会根据第一行的数据猜测每列数据的类,也可以自己设定,可选值有"numeric","character","Date","POSIXct"
write相关的函数
write.xlsx(x, file, sheetName = "Sheet1", col.names = TRUE, row.names = TRUE,
           append = FALSE, showNA = TRUE, password = NULL)
write.xlsx2(x, file, sheetName = "Sheet1", col.names = TRUE, row.names = TRUE,
            append = FALSE, password = NULL, ...)

说明:

  • append:在已有的文件上进行写入,T or F

其他对excel进行操作的函数

addDataFrame

将dataframe插入sheet中

addDataFrame(x, sheet, col.names = TRUE, row.names = TRUE, startRow = 1,
             startColumn = 1, colStyle = NULL, colnamesStyle = NULL, 
             rownamesStyle = NULL, showNA = FALSE, characterNA = "", 
             byrow = FALSE)

说明:

  • x:dataframe
  • row.names/col.names:x的行名和列名一起写入sheet,T or F
  • byrow:将x插入sheet 'in row wise fashion',不懂什么意思
addHyperlink

插入超链接

addHyperlink(cell, address, linkType = c("URL", "DOCUMENT", "EMAIL", "FILE"),
             hyperlinkStyle = NULL)

说明:

  • 该函数将cell中的value超链接到address
  • hyperlinkStyle是NULL时,默认是加上蓝色下划线
addPicture

插入图片

addPicture(file, sheet, scale = 1, startRow = 1, startColumn = 1)
ForceRefresh
forcePivotTableRefresh(file, output = NULL, verbose = FALSE)  ## 更新数据透视表
forceFormulaRefresh(file, output = NULL, verbose = FALSE)  ## 更新公式

说明:

  • output:更新后的文件路径,如果是NULL,就将原文件覆盖
  • verbose:展示细节,T or F
addAutoFilter

插入筛选,就是那个小倒三角一点有下拉菜单的东西

addAutoFilter(sheet, cellRange)

说明:

  • cellRange:不管是以下三种中的哪一种,都会在选中的cellblock的第一行插入筛选
    "1:5" 第1到5行的cellblock
    "A:C" 第1到3列的cellblock
    "A1:C5" 一个从A1选中到C5的cellblock
MergeRegion

单元格合并与拆分

addMergedRegion(sheet, startRow, endRow, startColumn, endColumn)  ## 合并单元格
removeMergedRegion(sheet, ind)  ## 拆分单元格

说明:

  • 文档说明写的是addMergedRegion会返回一个值,用这个值作为ind就可以拆分单元格了,但是貌似办不到
autoSizeColumn

自动调整列宽到合适的值(就是excel中双击列的右边达到的效果)

autoSizeColumnlumn(sheet, colIndex)
createFreezePane

冻结窗格

createFreezePane(sheet, rowSplit, colSplit, startRow = NULL, startColumn = NULL)

说明:

  • 该函数的作用类似于选中第rowSplit行第colSplit列的单元格后冻结窗格,同时冻结后的界面的右下角第一个单元格为第startRow行第startColumn列
createSplitPane

拆分

createSplitPane(sheet, xSplitPos = 2000, ySplitPos = 2000, startRow = 1, 
                startColumn = 1, position = "PANE_LOWER_LEFT")
setColumnWidth

设定列宽

setColumnWidth(sheet, colIndex, colWidth)
setZoom

缩放(就是excel的右下角那个百分比缩放)

setZoom(sheet, numerator = 100, denominator = 100)

说明:

  • 缩放比例为 numerator/denominator

以上内容大致为xlsx包说明文档的整理,有一些操作通过xlsx包似乎无法实现,例如:删除行同时让被删除行下方的数据自动上移,删除列同理等。这个似乎需要在了解Apache POI的基础上自己编写R函数实现。

关于通过R操作excel的包除了xlsx之外还有XLConnect包和openxlsx包,有时间再做整理。

你可能感兴趣的:(R -> xlsx包(2))