楼主: shawnmichaels
6687 11

[程序分享] 转发:用R读取Excel的新方法 [推广有奖]

  • 5关注
  • 3粉丝

已卖:378份资源

讲师

91%

还不是VIP/贵宾

-

威望
0
论坛币
21148 个
通用积分
13.4320
学术水平
18 点
热心指数
27 点
信用等级
17 点
经验
45706 点
帖子
715
精华
0
在线时间
297 小时
注册时间
2010-7-2
最后登录
2023-5-4

楼主
shawnmichaels 发表于 2012-6-3 08:50:47 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
       还在纠结用如何用R读取Excel的同学有福了。昨天逛CRAN的时候发现了一个xlsx包,它给出的介绍是可以读取、写入Excel 2007/2003文件并支持格式的设置。简单地来说,将Excel读取为数据框,以及将数据框写入为Excel文件都不是问题,而更加强大的是它能处理 Excel中的格式,比如合并单元格,设置列的宽度,设置字体和颜色等等。
如果只需要基本的读取/写入操作,那么其中的read.xlsx()write.xlsx()应该就能满足大部分的需求了,其用法也很简单,看看帮助文档就了解了。此外,还有两个相应的函数read.xlsx2()write.xlsx2(),按作者的话说,这两个函数使用了不同的实现方式,效率上会更高一些。
    除了基本的读写操作之外,如之前所说,xlsx包还能进行格式方面的设置。下面是一个简单的例子,说明了如何创建工作簿和工作表,如何操作单元格等。感兴趣的朋友不妨运行一下下面的例子,看看最终的效果。
ind = read.table(url("http://yixuan.cos.name/cn/wp-content/uploads/2012/01/ind.txt"),
                 sep = "\t");

library(xlsx);
# Create a new workbook
wb = createWorkbook();
# Create a new sheet with a name
sheet1 = createSheet(wb, "第一页");
# Set the zoom ratio when you open the Excel file
setZoom(sheet1, 50, 100);
# Set the width of columns
setColumnWidth(sheet1, 1:100, 2.8);

# Create rows
rows = createRow(sheet1, 1:40);
# Create cells for each row
cells = createCell(rows, 1:73);
# Merge the first row into one cell
addMergedRegion(sheet1, 1, 1, 1, 73);
# Create the style for title cell
title_cell_style = CellStyle(wb,
    alignment = Alignment(horizontal = "ALIGN_CENTER"),
    font = Font(wb, "blue", 50, isBold = TRUE));
# Create the style for black cells
black_cell_style = CellStyle(wb,
    border = Border(),
    fill = Fill(foregroundColor= "black"));
# Get the first row
first_row = getRows(sheet1, 1);
# Get the title cell from first row
title_cell = getCells(first_row, 1)[[1]];
# Set the value of the title cell
setCellValue(title_cell, "Read/Write Excel!");
# Set the style of the title cell
setCellStyle(title_cell, title_cell_style);
# Set the style of black cells
tmp = mapply(function(x, y) setCellStyle(cells[[x, y]], black_cell_style),
       ind[, 1] 3, ind[, 2] 5);
# Save the workbook into a file
saveWorkbook(wb, "test.xlsx");
总的来说,xlsx包是我目前见过的功能最全的操作Excel的R包,它只依赖于Java环境和rJava、xlsxjars两个包,在多种平台下 都能运行,局限是写操作只支持Excel 2007格式(*.xlsx),对于机器上只有MS Office 2003的人来说可能会有些不便。(LibreOffice和OpenOffice.org都可以打开Excel 2007文件)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:EXCEL xcel exce cel 新方法 Excel

已有 1 人评分经验 论坛币 收起 理由
ltx5151 + 20 + 20 根据规定进行奖励

总评分: 经验 + 20  论坛币 + 20   查看全部评分

沙发
jiangqing001 发表于 2012-6-3 08:55:19
谢谢

藤椅
shawnmichaels 发表于 2012-6-3 09:17:21
jiangqing001 发表于 2012-6-3 08:55
谢谢
好东西,大家享!

板凳
trier2006 发表于 2012-6-3 12:38:07
谢谢分享
最好的医生是自己,最好的药物是时间……

报纸
lhf8059 发表于 2012-6-3 13:46:54
thanks

地板
melody21 发表于 2012-6-4 01:55:06
谢谢分享。

7
马甲1号 发表于 2012-6-4 12:59:52
根据谢大牛的观点,用R读excel还是通过转存csv或剪贴板的方法比较靠谱。。
http://yihui.name/en/2009/09/how-to-import-ms-excel-data-into-r/
不过这个包倒挺适合把R的数据做成xlsx的。
归欤!归欤!吾党之小子狂简,斐然成章,不知所以裁之。

8
waterhorse 发表于 2012-6-6 12:54:23
Xie Xie sharing

9
zach18 发表于 2012-6-7 05:04:04
還不如直接存csv格式。。。在用read.csv。。。

10
firelife 发表于 2012-6-7 11:27:57
读中文的excel 会出现乱码,你这里有吗

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 16:33