R語言函數(shù)封裝-保存數(shù)據(jù)框?yàn)閤lsx工作薄中的工作表sheet

R語言函數(shù)封裝

保存數(shù)據(jù)框?yàn)閤lsx工作薄中的工作表sheet

add_to_workbook

  1. 如果不存在該xlsx文件桨菜,那么新建xlsx文件巍扛,再寫入工作表
  2. 如果存在該xlsx文件芝此,那么根據(jù)工作表名寫入新的工作表

不能寫入同一個(gè)xlsx文件中的同名工作表

函數(shù)名add_to_workbook
調(diào)用方式

# 如果函數(shù)封裝在另一個(gè)R文件馒疹,則需先引入包資源
source("./save_xlsx.R")
# 模擬數(shù)據(jù)框
data <- data.frame(Column1 = c("Value1", "Value2", "Value3"), Column2 = c(10, 20, 30))
add_to_workbook(data, "my_workbook.xlsx", "NewSheet")

三個(gè)參數(shù):
data:數(shù)據(jù)框
workbook_name: 工作薄名(即.xlsx文件名)橄碾,如不輸入狡逢,默認(rèn)為WorkBook+年月日時(shí)分秒.xlsx
worksheet_name: 工作表明, 如不輸入棚亩,默認(rèn)為sheet1

代碼如下:



add_to_workbook <- function(data, workbook_name = paste0("WorkBook", "_",Sys.Date(), "_",format(Sys.time(), "%H%M%S"), ".xlsx"), worksheet_name = "sheet1" ){
  if (!require("openxlsx")) {
    library("openxlsx")
  } 
  # else {
  #   cat(paste0(package_name, "已導(dǎo)入蓖议,無需再次導(dǎo)入藻肄。\n"))
  # }
  if (file.exists(workbook_name)) {
    # 如果文件存在,加載工作簿并添加新工作表
    existing_wb <- loadWorkbook(workbook_name)
    
    if (worksheet_name %in% names(existing_wb)) {
      cat(paste0("表格文件 ",workbook_name," 中已有同名工作表 ", worksheet_name, " 拒担!\n"))
      return("請(qǐng)仔細(xì)檢查代碼嘹屯!")
    }
    
    addWorksheet(existing_wb, worksheet_name)
    writeData(existing_wb, worksheet_name, data)
    
    
    # 設(shè)置字體和居中格式
    style <- createStyle(fontColour = "black", fontName = "Arial",fontSize = 10, halign = "center", valign = "center")
    addStyle(existing_wb, worksheet_name, style, rows = 1:(nrow(data)+1), cols = 1:(ncol(data)+1), gridExpand = TRUE)
    
    
    # 設(shè)置首行加粗
    bold_style <- createStyle(fontColour = "black", fontName = "Arial", fontSize = 12, halign = "center", valign = "center", textDecoration = "Bold")
    addStyle(existing_wb, worksheet_name, bold_style, rows = 1, cols = 1:ncol(data), gridExpand = TRUE)
    
    # 設(shè)置自適應(yīng)行高和列寬
    setColWidths(existing_wb, worksheet_name, cols = 1:2, widths = "8")
    setColWidths(existing_wb, worksheet_name, cols = 3:ncol(data), widths = "16")
    setRowHeights(existing_wb, worksheet_name, rows = 1:nrow(data), heights = "20")
    
    # 保存修改后的工作簿
    saveWorkbook(existing_wb, workbook_name, overwrite = TRUE)
    cat(paste0("表格文件",workbook_name," 當(dāng)前已經(jīng)存在! 成功追加工作表 ", worksheet_name, " \n"))
  } else {
    # 如果文件不存在从撼,創(chuàng)建新工作簿并添加工作表
    wb <- createWorkbook()
    addWorksheet(wb, worksheet_name)
    writeData(wb, worksheet_name, data)
    
  
    # 設(shè)置字體和居中格式
    style <- createStyle(fontColour = "black", fontName = "Arial",fontSize = 10, halign = "center", valign = "center")
    addStyle(wb, worksheet_name, style, rows = 1:(nrow(data)+1), cols = 1:(ncol(data)+1), gridExpand = TRUE)
   
    # 設(shè)置首行加粗
    bold_style <- createStyle(fontColour = "black", fontName = "Arial", fontSize = 12, halign = "center", valign = "center", textDecoration = "Bold")
    addStyle(wb, worksheet_name, bold_style, rows = 1, cols = 1:ncol(data), gridExpand = TRUE)
    
    # 設(shè)置自適應(yīng)行高和列寬
    setColWidths(wb, worksheet_name, cols = 1:2, widths = "8")
    setColWidths(wb, worksheet_name, cols = 3:ncol(data), widths = "16")
    setRowHeights(wb, worksheet_name, rows = 1:nrow(data), heights = "20")
    
    # 保存新工作簿
    saveWorkbook(wb, workbook_name, overwrite = FALSE)
    cat(paste0("表格文件 ",workbook_name," 不存在州弟! 成功新建工作薄并添加工作表 ", worksheet_name, "  \n"))
  }
}




# 模擬數(shù)據(jù)框
# data <- data.frame(Column1 = c("Value1", "Value2", "Value3"),
                   # Column2 = c(10, 20, 30))

# add_to_workbook(data, "my_workbook.xlsx", "NewSheet")
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市低零,隨后出現(xiàn)的幾起案子婆翔,更是在濱河造成了極大的恐慌,老刑警劉巖掏婶,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啃奴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡雄妥,警方通過查閱死者的電腦和手機(jī)最蕾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來老厌,“玉大人瘟则,你說我怎么就攤上這事≈Τ樱” “怎么了醋拧?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)淀弹。 經(jīng)常有香客問我丹壕,道長(zhǎng),這世上最難降的妖魔是什么薇溃? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任菌赖,我火速辦了婚禮,結(jié)果婚禮上痊焊,老公的妹妹穿的比我還像新娘盏袄。我一直安慰自己,他們只是感情好薄啥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逛尚,像睡著了一般垄惧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绰寞,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天到逊,我揣著相機(jī)與錄音铣口,去河邊找鬼。 笑死觉壶,一個(gè)胖子當(dāng)著我的面吹牛脑题,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播铜靶,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼叔遂,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了争剿?” 一聲冷哼從身側(cè)響起已艰,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蚕苇,沒想到半個(gè)月后哩掺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涩笤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年嚼吞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹬碧。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡誊薄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锰茉,到底是詐尸還是另有隱情呢蔫,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布飒筑,位于F島的核電站片吊,受9級(jí)特大地震影響胆萧,放射性物質(zhì)發(fā)生泄漏鸳玩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一吊履、第九天 我趴在偏房一處隱蔽的房頂上張望肤晓。 院中可真熱鬧爷贫,春花似錦、人聲如沸补憾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盈匾。三九已至腾务,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間削饵,已是汗流浹背岩瘦。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工未巫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人启昧。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓叙凡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親密末。 傳聞我的和親對(duì)象是個(gè)殘疾皇子握爷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容