以下内容是对xlsx包的说明文档的整理:xlsx包说明文档
该包通过操作以下七种对象来对excel进行操作
- workbook:excel文件
- sheet:excel文件中的表格
- row:表格中的行
- cell:行中的单元格
- cellstyle:单元格格式
- cellcomment:单元格批注
- cellblock:单元格块,即m行n列的一堆单元格
Workbook
workbook就是一个excel文件,关于workbook有以下三个函数。
createWorkbook(type = "xlsx") ## 创建workbook
loadWorkbook(file, password = NULL) ## 从file中加载workbook
saveWorkbook(wb, file, password = NULL) ## 保存workbook到file
说明:
- file:文件路径
- wb:workbook
Sheet
sheet就是一个表格,关于sheet有以下三个函数。
createSheet(wb, sheetName = "Sheet1") ## 在wb中创建sheet
removeSheet(wb, sheetName = "Sheet2") ## 删除wb中的sheet
getSheets(wb) ## 获取wb中的sheet(s)
Row
关于row我理解为,sheet就是由n个row组成的,就如同workbook是由n个sheet组成一样,关于row有以下四个函数。
createRow(sheet, rowIndex = 1:5) ## 在sheet中创建row
getRows(sheet, rowIndex = NULL) ## 获取sheet中的row
removeRow(sheet, rows = NULL) ## 删除row
setRowHeight(rows, inPoints, multiplier) ## 设定行高
说明:
- rowIndex:行号,为NULL时表示所有行
- inPoints:行高
- multiplier:默认行高(我的电脑上是15)的倍数,优先级大于inPoints
- 这里的removeRow仅仅将行上的数据变成空白,并没有删除整行
Cell
row是由n个cell组成的,关于cell有以下四个函数。
createCell(row, colIndex = 1:5) ## 在row中创建cell
getCells(row, colIndex = NULL, simplify = TRUE) ## 获取row中的cell
setCellValue(cell, value, richTextString = FALSE, showNA = TRUE) ##给cell赋值
getCellValue(cell, keepFormulas = FALSE, encoding = "unknown") ## 获取cell的值
说明:
- colIndex:列号,为NULL时表示所有列
- simplify:若为FALSE则返回一个含有列表的列表
- richTextString:是否作为多信息文本插入
- setCellValue和getCellValue两个函数都没有向量化,所以对多个cell使用时需要使用mapply函数和lapply函数
CellStyle
cellstyle是单元格的格式,主要有下面三个函数。
CellStyle(wb, dataFormat = NULL, alignment = NULL, border = NULL,
fill = NULL, font = NULL, cellProtection = NULL) ## 设定格式
setCellStyle(cell, cellStyle) ## 将格式应用到单元格
getCellStyle(cell) ## 获取单元格的格式
cellstyle的参数可以通过+
来连接,如下
CellStyle(wb) +
DataFormat() +
Alignment() +
Border() +
Fill() +
Font() +
CellProtection()
这里的格式有六种:
- dataformat:数字
- alignment:对齐
- border:边框
- fill:填充
- font:字体
- cellprotection:保护
dataformat
DataFormat(x)
说明:
- x:表示数据格式的字符
- 通过使用excel录制宏然后查看VBA代码的方式可以找到想要的x的代码
alignment
Alignment(horizontal = NULL, vertical = NULL, wrapText = FALSE,
rotation = 0, indent = 0)
说明:
- horizontal:水平对齐(星号为常用)
"ALIGN_CENTER" 居中 ✳
"ALIGN_CENTER_SELECTION" 跨列居中
"ALIGN_FILL" 填充
"ALIGN_GENERAL" 常规
"ALIGN_JUSTIFY" 两端对齐
"ALIGN_LEFT" 靠左(缩进)✳
"ALIGN_RIGHT" 靠右(缩进)✳ - vertical:垂直对齐(星号为常用)
"VERTICAL_BOTTOM" 靠下
"VERTICAL_CENTER" 居中 ✳
"VERTICAL_JUSTIFY" 两端对齐
"VERTICAL_TOP" 靠上 - wrapText:自动换行,T or F
- rotation:字体旋转角度
- indent:缩进距离
border
Border(color = "black", position = "BOTTOM", pen = "BORDER_THIN")
说明:
- color:线条颜色
- position:线条位置 "BOTTOM" "LEFT" "TOP" "RIGHT"
- pen:线条类型,有十四种,根本记不住,常用的应该就下面两个:
"BORDER_THIN" 普通的线
"BORDER_THICK" 加粗的线
fill
Fill(foregroundColor = "lightblue", backgroundColor = "lightblue",
pattern = "SOLID_FOREGROUND")
说明:(不太明白具体区别感觉没多大用)
- foregroundColor:前景颜色
- backgroundColor:背景颜色
- pattern:填充模式
font
Font(color = NULL, heightInPoints = NULL, name = NULL, isItalic = FALSE,
isStrikeout = FALSE, isBold = FALSE, underline = NULL, boldweight = NULL)
说明:
- color:字体颜色
- heightInPoints:字体大小
- name:字体类型,code可以在excel中直接看到
- isItalic:斜体,T or F
- isStrikeout:删除线,T or F
- isBold:加粗,T or F
- underline:下划线粗度,数值0,1,2
- boldweight:加粗要加多粗,正常字体是400,正常加粗字体是700
cellprotection
CellProtection(locked = TRUE, hidden = FALSE)
说明:
- locked:单元格锁定,T or F
- hidden:单元格隐藏,T or F
CellComment
cellcomment是单元格的批注,有以下三个函数。
createCellComment(cell, string = "", author = NULL, visible = TRUE) ## 创建批注
getCellComment(cell) ## 获取cell的批注
removeCellComment(cell) ## 删除cell的批注
说明:
- string:批注内容
- author:批注作者
- visible:可见,T or F
CellBlock
cellblock是sheet的一部分,通过以下函数获取。
CellBlock(sheet, startRow, startColumn, noRows, noColumns, create = TRUE)
说明:
- startRow:起始行
- startColumn:起始列
- noRows:行数
- noColumns:列数
- create:当sheet中不存在cell的时候,创建新单元格,T or F
以下是对cellblock进行操作的六个函数。
CB.setColData(cellBlock, x, colIndex, rowOffset = 0, showNA = TRUE,
colStyle = NULL) ## 给列填充数据
CB.setRowData(cellBlock, x, rowIndex, colOffset = 0, showNA = TRUE,
rowStyle = NULL) ## 给行填充数据
CB.setMatrixData(cellBlock, x, startRow, startColumn, showNA = TRUE,
cellStyle = NULL) ## 给行列填充数据
CB.setFill(cellBlock, fill, rowIndex, colIndex) ## 填充色
CB.setFont(cellBlock, font, rowIndex, colIndex) ## 字体格式
CB.setBorder(cellBlock, border, rowIndex, colIndex) ## 网格线
说明:
- rowOffset:起始行
- colOffset:起始列
- rowStyle:行格式
- colStyle:列格式
网友评论