XLConnect:一个用R处理Excel文件的高效平台
code{white-space: pre;}
pre:not([class]) {
background-color: white;
}
.main-container {
max-width: 940px;
margin-left: auto;
margin-right: auto;
}
code {
color: inherit;
background-color: rgba(0, 0, 0, 0.04);
}
img {
max-width:100%;
height: auto;
}
XLConnect:一个用R处理Excel文件的高效平台
read.table(),read.csv(),read.delim()等函数可以直接读取EXCEl文件,但或多或少总会遇到一些问题。XLConnect函数包,是一个可以用R处理Excel文件的高效平台。利用它可以读取或创建一个XLSX文件,并对文件进行数据处理,对文本内数据进行标记,以及可视化。
创建读取xlsl文件
require("XLConnect")
## Loading required package: XLConnect
## Loading required package: XLConnectJars
## XLConnect 0.2-11 by Mirai Solutions GmbH [aut],
## Martin Studer [cre],
## The Apache Software Foundation [ctb, cph] (Apache POI, Apache Commons
## Codec),
## Stephen Colebourne [ctb, cph] (Joda-Time Java library)
## http://www.mirai-solutions.com ,
## http://miraisolutions.wordpress.com
# 读取或创建一个XLSX文件,此步相当于建立一个连接
xls <- loadWorkbook('C:/Users/ShangFR/Desktop/test.xlsx',create=TRUE)
创建工作表
createSheet(xls,name='namesheet')
写入数据
writeWorksheet(xls,iris,'namesheet',
startRow=5,startCol=5, # 数据出现的左上角位置
header=TRUE)
存入硬盘,直到此步方才有文档生成
saveWorkbook(xls)
上面四个步骤是新建文档、新建工作表、写入数据、最后存盘。如果要写入数据的同时创建好区域名称,则在第三步有所不同。
创建区域名
createName(xls,name='nameregion',
formula='namesheet!$C$5', #区域的左上角单元格位置
overwrite=TRUE)
写入数据
writeNamedRegion(xls,iris,name='nameregion')
读取文档则简单的多
data <- readWorksheet(xls, 'namesheet',
startRow=1, startCol=1,
endRow=0,endCol=0, #取0表示自动判断
header=TRUE)
文件内数据标记、处理和可视化
一、创建汇率excel
#一、创建汇率excel
require(XLConnect)
require(zoo)
## Loading required package: zoo
##
## Attaching package: 'zoo'
##
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
require(ggplot2) # >= 0.9.3
## Loading required package: ggplot2
curr = XLConnect::swissfranc
curr = curr[order(curr$Date),]
wbFilename = "swiss_franc.xlsx"
wb = loadWorkbook(wbFilename, create = TRUE)
# Create a new sheet named 'Swiss_Franc'
sheet = "Swiss_Franc"
createSheet(wb, name = sheet)
# Create a new Excel name referring to the top left corner
# of the sheet 'Swiss_Franc' - this name is going to hold
# our currency data
dataName = "currency"
nameLocation = paste(sheet, "$A$1", sep = "!")
createName(wb, name = dataName, formula = nameLocation)
# Instruct XLConnect to only apply a data format for a cell
# but not to apply any other cell styling
setStyleAction(wb, XLC$"STYLE_ACTION.DATA_FORMAT_ONLY")
# Set the default format for numeric data to display
# four digits after the decimal point
setDataFormatForType(wb, type = XLC$"DATA_TYPE.NUMERIC", format = "0.0000")
# Write the currency data to the named region created above
# Note: the named region will be automatically redefined to encompass all
# written data
writeNamedRegion(wb, data = curr, name = dataName, header = TRUE)
# Save the workbook (this actually writes the file to disk)
saveWorkbook(wb)
#二、颜色标记-特殊值
# Load the workbook created above
wb = loadWorkbook(wbFilename)
# Create a cell style for the header row
csHeader = createCellStyle(wb, name = "header")
setFillPattern(csHeader, fill = XLC$FILL.SOLID_FOREGROUND)
setFillForegroundColor(csHeader, color = XLC$COLOR.GREY_25_PERCENT)
# Create a date cell style with a custom format for the Date column
csDate = createCellStyle(wb, name = "date")
setDataFormat(csDate, format = "yyyy-mm-dd")
# Create a highlighting cell style
csHlight = createCellStyle(wb, name = "highlight")
setFillPattern(csHlight, fill = XLC$FILL.SOLID_FOREGROUND)
setFillForegroundColor(csHlight, color = XLC$COLOR.CORNFLOWER_BLUE)
# Apply header cell style to the header row
setCellStyle(wb, sheet = sheet, row = 1,
col = seq(length.out = ncol(curr)),
cellstyle = csHeader)
# Index for all rows except header row
allRows = seq(length = nrow(curr)) + 1
# Apply date cell style to the Date column
setCellStyle(wb, sheet = sheet, row = allRows, col = 1,cellstyle = csDate)
# Set column width such that the full date column is visible
setColumnWidth(wb, sheet = sheet, column = 1, width = 2800)
# Check if there was a change of more than 2% compared
# to the previous day (per currency)
idx = rollapply(curr[, -1], width = 2,
FUN = function(x) abs(x[2] / x[1] - 1),
by.column = TRUE) > 0.02
idx = rbind(rep(FALSE, ncol(idx)), idx)
widx = lapply(as.data.frame(idx), which)
# Apply highlighting cell style
for(i in seq(along = widx)) {
if(length(widx[[i]]) > 0) {
setCellStyle(wb, sheet = sheet, row = widx[[i]] + 1, col = i + 1,cellstyle = csHlight)
}
}
saveWorkbook(wb)
#三、添加汇率趋势图
wb = loadWorkbook(wbFilename)
# Stack currencies into a currency variable (for use with ggplot2 below)
currencies = names(curr)[-1]
gcurr = reshape(curr, varying = currencies, direction = "long",
v.names = "Value", times = currencies, timevar = "Currency")
# Create a png graph showing the currencies in the context
# of the Swiss Franc
png(filename = "swiss_franc.png", width = 800, height = 600)
p = ggplot(gcurr, aes(Date, Value, colour = Currency)) +
geom_line() + stat_smooth(method = "loess") +
scale_y_continuous("Exchange Rate CHF/CUR") +
labs(title = paste0("CHF vs ", paste(currencies, collapse = ", ")),
x = "") +
theme(axis.title.y = element_text(size = 10, angle = 90, vjust = 0.3))
print(p)
dev.off()
## png
## 2
p
aaarticlea/png;base64,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" title alt width="672" />
# Define where the image should be placed via a named region;
# let's put the image two columns left to the data starting
# in the 5th row
createName(wb, name = "graph",
formula = paste(sheet, idx2cref(c(5, ncol(curr) + 2)), sep = "!"))
# Put the image created above at the corresponding location
addImage(wb, filename = "swiss_franc.png", name = "graph",
originalSize = TRUE)
saveWorkbook(wb)
XLConnect的帮助文档内有详细介绍,感兴趣的可直接参考。
反馈与建议
- 作者:ShangFR
- 邮箱:shangfr@foxmail.com
XLConnect:一个用R处理Excel文件的高效平台的更多相关文章
- R读取excel文件
2017.09.05 我一个下午的成果啊啊啊啊,看看失败 不禁感叹一声,失败的路真是多啊!!!! 一.安装xlsx包 下面具体讲一讲怎么弄的(太笨了,所以学得慢,需要一步一步的来) 用R读取excel ...
- 如何用 php 读取一个很大的 excel 文件。
这个程序是用php 读取一个很大的excel文件, 先将 excel 文件保存成csv 文件, 然后利用 迭代器 逐行读取 excel 单元格的值, 拿到值以后 做相应处理,并打印结果. <?p ...
- R读取excel文件乱码 read.xlsx() 解决方法
1. 参考[R语言]R读取含中文excel文件,read.xlsx乱码问题 该文章总结得很好,可以直接跳到最后看博主的总结. 2. 如果依旧是乱码那么用read.xlsx2()去读取excel文件, ...
- 一个NPOI导出到excel文件的范例记录
'使用NPOI写入新创建的excel文件,导出文件: Private Sub Sub_WriteXls() Dim XlsBook As XSSFWorkbook Dim XlsSheet As XS ...
- R语言读取excel文件的3种方法
R读取excel文件中数据的方法: 电脑有一个excel文件,原始的文件路径是:E:\R workshop\mydata\biom excel数据为5乘2阶矩阵,元素为 ...
- 用php生成一个excel文件(原理)
1.我们用php来生成一个excel文档来讲述其原理: excel2007里面的文档目录组成部分为: 2.我们使用ZipArchive()方法来生成一个简易的excel文件. 使用方法: 3.代码如下 ...
- python 操作Excel文件
1 安装xlrd.xlwt.xlutils cmd下输入: pip install xlrd #读取excel pip install xlwt #写入excel pi ...
- python使用xlrd, xlwt读取excel文件和 写入excel文件
python 3.6 首先在cmd下执行安装指令 xlre和xlwt : pip install xlre pip install xlwt #-*- coding: utf8 -*-im ...
- Python读写Excel文件的实例
最近由于经常要用到Excel,需要根据Excel表格中的内容对一些apk进行处理,手动处理很麻烦,于是决定写脚本来处理.首先贴出网上找来的读写Excel的脚本. 1.读取Excel(需要安装xlrd) ...
随机推荐
- 使用Xcode6.1.1打包出现Your account already has a valid iOS Distribution certificate问题
1.问题描述: 使用客户证书在Xcode6.1.1上进行打包测试,出现如下问题,查看网上也很多类似错误且解决办法各异. 2.我的解决办法: 让客户将开发.发布证书重新revoke掉之后重新创新并给到p ...
- css中的position:relative和absolute 属性
语法: position : static | absolute | fixed | relative 取值: static :默认值.无特殊定位,对象遵循HTML定位规则 absolute :将对象 ...
- Binary Tree Postorder Traversal--leetcode难题讲解系列
https://leetcode.com/problems/binary-tree-postorder-traversal/ Given a binary tree, return the posto ...
- Android动态设置android:drawableLeft|Right|Top|Bottom 并根据分辨率自适应
http://blog.sina.com.cn/s/blog_4b93170a0102e1m9.html //调用setCompoundDrawables时,必须调用Drawable.setBound ...
- netty 学习
示例 : wikit http://netty.io/wiki/index.html 书 : netty in action http://blog.csdn.net/abc_key/article/ ...
- Jellycons – iOS 8 图标下载(PNG, SKETCH)
Jellycons 这套由 LoveUI.co 设计图标包括30款扁平化,圆滑,丰富多彩的 iOS 8 应用程序图标,可以用于于个人和商业项目的使用.另外,PNG 格式包含11种尺寸(1024px, ...
- Android 学习笔记之Volley开源框架解析(三)
学习内容: 1.CacheDispatcher缓存请求调度... 2.Cache缓存数据的保存... 3.DiskBasedCache基于磁盘的缓存类实现方式... 前面说到使用Volley发 ...
- IOS中对象的归档
ios提供了两个类 NSKeyedArichiver NSKeyedUnarchiver对自定义对象进行归档 和解档操作 归档常见方法 - (void)encodeObject:(id)objv fo ...
- QCustomplot使用分享(五) 布局
一.历史对比 关于QCPLayoutElement这个元素的讲解之前,我想先对1.3.2release版本和2.0.0beta版本的该元素做以简单的对比介绍,首先,1.3.2release版本时,鼠标 ...
- 通过刷bios的方式在win8.1平板上启动windows phone模拟器
最近买了个Windows8.1平板电脑,不是Surface Pro,太贵,而是国产的乐凡F2(64G.4G内存),CPU是赛扬U1037.最开始安装Visual Studio2013以及其他开发工具都 ...