R -> xlsx包(2)

以下內容是對xlsx包的說明文檔的整理:xlsx包說明文檔

除了 R -> xlsx包(1)中的關于七種對象(workbook,sheet,row,cell,cellstyle,cellcomment,cellblock)的操作函數外,xlsx包還提供了一些別的函數:

  1. 讀?。╮ead)和寫入(write)相關的函數
  2. 其它的對excel進行操作的函數

讀?。╮ead)和寫入(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:展示細節(jié),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包,有時間再做整理。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 股票初級訓練營第29期:他日,抱富相見之三 轉眼股票訓練營還有三天就畢業(yè)了,對比小白營、基金營,我有更多的感悟。...
    烏尤尼_a142閱讀 1,450評論 7 87
  • 眾多甜點當中,布朗尼(Brownie)絕對不是我喜歡的類型,類似于它的還有像Tiramisù或者Crème br?...
    lucia_藝閱讀 378評論 0 0
  • 把所有的痛苦打包 當成快樂享受 把所有的質疑捆綁 當成前行的干糧 踩著把所有的阻礙 做成的墊腳石 帶上不服輸的指南...
    夏夜冬日閱讀 243評論 4 2
  • 我好希望成為你的手機 那種被你捧在手心里的感覺 也許我這輩子也體驗不了 你的手機摔在地上...
    SY的小公舉閱讀 289評論 0 1

友情鏈接更多精彩內容