可以非常方便地读取、写入、编辑.xlsx文件,无需设置java,同时输出的table样式比write.csv从看起来更加舒适。

其他非.xlsx的excel文件可另存为.xlsx文件后使用这个包

描述:

openxlsx simplifies the the process of writing and styling Excel xlsx files from R and removes the dependency on Java.

简化了处理xlsx文件的过程

可以用于读取xlsx文件,将数据写入到xlsx文件,设置xlsx文件的样式

1. 从xlsx文件中读取数据

(1)read.xlsx()函数

Read data from an Excel file or Workbook object into a data.frame

用法:

read.xlsx(xlsxFile, sheet = 1, startRow = 1, colNames = TRUE, rowNames = FALSE,

detectDates = FALSE, skipEmptyRows = TRUE, skipEmptyCols = TRUE,

rows = NULL, cols = NULL, check.names = FALSE, namedRegion = NULL, na.strings = "NA", fillMergedCells = FALSE)

常用参数:

xlsxFile:An xlsx file, Workbook object or URL to xlsx file. xlsx文件路径
sheet:The name or index of the sheet to read data from. sheet名或者数字索引
startRow:first row to begin looking for data. Empty rows at the top of a file are always skipped, regardless of the value of startRow. 从哪一行开始读入
colNames:If TRUE, the first row of data will be used as column names. 如果TRUE,则第一行作为列名
rowNames:If TRUE, first column of data will be used as row names. 如果TRUE,则第一列作为行名
skipEmptyRows:If TRUE, empty rows are skipped else empty rows after the first row containing data will return a row of NAs.是否跳过空白行,否则该行返回NA
skipEmptyCols:If TRUE, empty columns are skipped. 是否跳过空白列
rows:A numeric vector specifying which rows in the Excel file to read. If NULL, all rows are read. 数值型向量,读入哪些行,默认为全部读入
cols:A numeric vector specifying which columns in the Excel file to read. If NULL, all columns are read.数值型向量,读入哪些列,默认为全部读入

返回值:数据框

(2)readWorkbook()

Read data from an Excel file or Workbook object into a data.frame

用法:

readWorkbook(xlsxFile, sheet = 1, startRow = 1, colNames = TRUE,  rowNames = FALSE,

detectDates = FALSE, skipEmptyRows = TRUE,  skipEmptyCols = TRUE,

rows = NULL, cols = NULL, check.names = FALSE, namedRegion = NULL, na.strings = "NA", fillMergedCells = FALSE)

参数:同read.xlsx

与read.xlsx()函数的区别:

使用上应该是没有区别吧(其他不确定)

通过查看源码发现:read.xlsx()为泛型函数,而readWorkbook()函数在内部只调用read.xlsx函数。

2. 向xlsx文件中写入数据

(1)方案一:write.xlsx()

write a data.frame or list of data.frames to an xlsx file

用法:

write.xlsx(x, file, asTable = FALSE, ...)

参数:

x:object or a list of objects that can be handled by writeData to write to file
file:xlsx file name
asTable:write using writeDataTable as opposed to writeData
...:optional parameters to pass to functions:

常用的可选参数:

firstRow = TRUE:冻结第一行

colWidths = ‘auto’:自动设置列宽

如果需要使用粳稻的可选参数设置样式,可以选择使用方案二写入数据

(2)方案二:createWorkbook()+ addWorksheet()+ writeData()或writeDataTable()+ saveWorkbook()

创建Workbook - 插入sheet - 在sheet中写入数据 - 保存workbook

(2.1)创建新的workbook:createWorkbook(creator = Sys.getenv("USERNAME"))

参数:creator:Creator of the workbook (your name). Defaults to login username

返回值:workbook对象

(2.2)向workbook中插入新的sheet表:

addWorksheet(wb, sheetName, gridLines = TRUE, ...

(2.3)向sheet中写入数据

writeData(wb, sheet, x, startCol = 1, startRow = 1, xy = NULL, colNames = TRUE, rowNames = FALSE, headerStyle = NULL,...)

writeDataTable(wb, sheet, x, startCol = 1, startRow = 1, xy = NULL, colNames = TRUE, rowNames = FALSE, headerStyle = NULL,...)

Write to a worksheet and format as an Excel table.

(2.5)设置样式

createStyle():设置边框,字体,字号,背景色等,注意如果设置多行或者多列不连续,需要使用循环结果依次设置

addStyle():将样式添加到sheet上

freezePane():设置冻结窗格

setColwidths():设置行宽

(2.4)保存workbook

saveWorkbook(wb, file, overwrite = FALSE)

3. 使用options()设置样式(全局)

options("openxlsx.borderColour" = "black"):表格边框颜色
options("openxlsx.borderStyle" = "thin"):表格边框样式
options("openxlsx.dateFormat" = "mm/dd/yyyy"):日期格式
options("openxlsx.datetimeFormat" = "yyyy-mm-dd hh:mm:ss"):时间日期格式
options("openxlsx.numFmt" = NULL):
options("openxlsx.paperSize" = 9) ## A4
options("openxlsx.orientation" = "portrait") ## page orientation

4. 额外设置样式

(1)创建一个style对象createStyle()

createStyle(fontName = NULL, fontSize = NULL, fontColour = NULL,
  numFmt = "GENERAL", border = NULL,
  borderColour = getOption("openxlsx.borderColour", "black"),
  borderStyle = getOption("openxlsx.borderStyle", "thin"), bgFill = NULL,
  fgFill = NULL, halign = NULL, valign = NULL, textDecoration = NULL,
  wrapText = FALSE, textRotation = NULL, indent = NULL)

(2)将创建的style对象用于某些单元格:addStyle(wb, sheet, style, rows, cols, gridExpand = FALSE, stack = FALSE)

(3)openXL(wb) ## opens a temp version 设置好样式后浏览下

(4)冻结窗格:freezePane(wb, sheet, firstActiveRow = NULL, firstActiveCol = NULL, firstRow = FALSE, firstCol = FALSE)

(5)设置列宽:setColWidths(wb, sheet, cols, widths = 8.43, hidden = rep(FALSE, length(cols)), ignoreMergedCells = FALSE)

如需自动列宽,将widths = ‘auto’

未解决问题:

在数据量较大时, 对数据框格式的数据使用write.xlsx()或其他写入excel文件的函数时,第一次可以调用成功,但是把project关闭重新打开后,经常会出现

Error in is.nan(tmp) : default method not implemented for type 'list'

openxlsx包:读取/输出excel数据相关推荐

  1. R语言批量读取写入Excel数据 r导出输出写入excel多个sheet 导出excel 导入 excel 读入excel 表格

    前一段,写过一篇:R语言中写入Excel的不同sheet表格,最近学习了tidyverse的方法,感觉需要总结一下,更新一下知识结构. 本文准备用实际数据,做一下操作: 「批量读取:」 批量读取多个E ...

  2. R语言批量读取写入Excel数据

    本文准备用实际数据,做一下操作: 「批量读取:」 批量读取多个Excel数据 批量读取一个Excel数据的不同表格 「批量写入」 批量写入Excel数据 1,批量写入到不同的Excel中 2,批量写入 ...

  3. ahk写入excel单元格_输出excel数据到GUI 获取excel所有Sheet及字段 Autohotkey

    ;Thinkai@2015-10-25 Gui, Add, Tab, x0 y0 w800 h500 vtab Gui, Show, , 输出excel数据到GUI FileSelectFile, f ...

  4. ssis 导入excel_使用SSIS包将MS Excel数据导入数据库

    ssis 导入excel The easiest way to import the data into the SQL database is using the Import Data wizar ...

  5. python xlrd使用_在Python中使用xlrd以文本形式读取数值Excel数据

    我正在尝试使用xlrd读取Excel文件,我想知道是否有方法忽略Excel文件中使用的单元格格式,并将所有数据作为文本导入? 以下是我目前使用的代码:import xlrd xls_file = 'x ...

  6. java怎么读取excel思路_java读取本地excel数据

    一 注解的定义 注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量.方法参 ...

  7. Qt读取/写入Excel数据--QAxObject

    效果图: QT += core gui axcontainer CONFIG += qaxcontainergreaterThan(QT_MAJOR_VERSION, 4): QT += widget ...

  8. java 读取excel数据

    本文共介绍两种方式,第一种是常规POI读取,第二种是大文件读取. 依赖包 <poi.version>4.1.2</poi.version><!-- excel工具 --& ...

  9. Unity游戏开发——Excel数据读取到游戏中

    C# Unity游戏开发--Excel中的数据是如何到游戏中的 (一) 引言 现在做游戏开发的没有几个不用Excel的,用的最多的就是策划.尤其是数值策划,Excel为用户提供强大的工具,各种快捷键, ...

  10. python读取excel数据使用pyecharts展示

    目录 一.场景 二.思路 三.代码 接上一博文读取[excel数据] 一.场景 场景:数据已经从excel读取完毕了,怎么展示呢 二.思路 思路:1.读取excel数据出来之后,那就是怎么去操作数据 ...

最新文章

  1. 如何建立和维护自己的“人脉”
  2. 组装肩部带有减速器双轴机械臂组装与调试
  3. 防止接口数据出问题,前端假数据调试
  4. [转]一次.NET Web应用程序安装包的制作经历:Sql数据库安装的3种方式 配置IIS及Web.Config文件...
  5. python有道翻译-Python调用有道词典翻译
  6. 两个有序链表序列的交集 (20分)(最佳解法)
  7. html:(23):css代码语法和css注释语法
  8. 小学计算机制作表格教案,小学信息技术《表格的制作》教案
  9. 最新有道翻译接口JS逆向分析
  10. 素数之年,IT运维其实可以很简单
  11. JWT跨域身份验证解决方案
  12. vlc linux静态版本,vlc 在ubuntu 14下的linux版本编译
  13. 手机端html本地存储,HTML5 web storage本地存储
  14. cobbler自动化系统安装
  15. 聊聊高并发系统之限流特技(二)作者:张开涛
  16. 【面试】Redis 基础数据类型以及常见面试问题
  17. 华为认证HCNE考试知识点
  18. Jenkins测试报告邮件通知模板(转载)
  19. python文件怎么另存为,python文件怎么保存
  20. 课程设计:简单计算器的实现

热门文章

  1. pytest多用例并行
  2. 移动开发作业5:近场通信
  3. ionic常用命令总结
  4. 【异步爬虫】圆我四大名著《西游记》之梦
  5. 《算法笔记》学习日记——3.2 查找元素
  6. Python基础语法 - 第2关 条件判断与条件嵌套
  7. 搜狗输入法的愚人节狂想
  8. 给定整数序列求连续子串最大和 - 滴滴出行2018校园招聘内推笔试-研发工程师
  9. Coremail带你一图读懂政务云建设-国产化-信心之选
  10. 视频更换封面,教你给多个视频批量更换统一封面图的方法