#R#R讀取EXCEL文件方法

轉載自:http://yixuan.cos.name/cn/2012/01/new-method-to-read-excel-file-in-r/app

還在糾結用如何用R讀取Excel的同窗有福了。昨天逛CRAN的時候發現了一個xlsx包,它給出的介紹是能夠讀取、寫入Excel 2007/2003文件並支持格式的設置。簡單地來講,將Excel讀取爲數據框,以及將數據框寫入爲Excel文件都不是問題,而更增強大的是它能處理Excel中的格式,好比合並單元格,設置列的寬度,設置字體和顏色等等。函數

若是隻須要基本的讀取/寫入操做,那麼其中的read.xlsx()write.xlsx()應該就能知足大部分的需求了,其用法也很簡單,看看幫助文檔就瞭解了。此外,還有兩個相應的函數read.xlsx2()write.xlsx2(),按做者的話說,這兩個函數使用了不一樣的實現方式,效率上會更高一些。字體

除了基本的讀寫操做以外,如以前所說,xlsx包還能進行格式方面的設置。下面是一個簡單的例子,說明了如何建立工做簿和工做表,如何操做單元格等。感興趣的朋友不妨運行一下下面的例子,看看最終的效果。url

link = "http://yixuan.cos.name/cn/wp-content/uploads/2012/01/ind.txt";
ind = read.table(url(link), 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文件)spa

相關文章
相關標籤/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。