2011-11-18 8 views
7

आर में एसएसवी फाइलों में एकाधिक वर्कशीट्स के साथ एक बड़ी एक्सेल स्प्रेडशीट को परिवर्तित करने का सबसे आसान तरीका क्या है?आर के साथ एक्सेल स्प्रेडशीट को .csv के रूप में सहेजें?

ध्यान दें कि मैंने एक्सएलकनेक्ट और एक्सएलएसएक्स का परीक्षण किया है और पाया है कि मेरी एक्सेल शीट्स इसे दुर्घटनाग्रस्त कर देती है। इसलिए मैं विशेष रूप से ऐसे समाधान की तलाश में हूं जो एक्सएलकनेक्ट या एक्सएलएसएक्स पैकेज का उपयोग नहीं करता है।

+1

सीएसवी में परिवर्तित करने के लिए एक्सेल का उपयोग क्यों न करें? – Stedy

+5

@Stedy - शायद एक्सेल स्प्रेडशीट स्वचालित आवधिक प्रक्रिया के हिस्से के रूप में उत्पन्न होता है जिसे एएमई संशोधित नहीं कर सकता है लेकिन अभी भी इसके साथ काम करना है। वैकल्पिक रूप से, शायद एएमई में वास्तव में 5,000 ऐसी एक्सेल शीट्स हैं और प्रत्येक से एकाधिक शीट निकालने की आवश्यकता है, लेकिन पहले से ही फाइलों में लूप कैसे करें। मैं एक बहुत से परिदृश्यों के बारे में सोच सकता हूं जिसमें मैन्युअल रूपांतरण रात्रिभोज हो जाता है। –

+0

@ मैटपार्कर - अच्छा बिंदु – Stedy

उत्तर

5

http://rwiki.sciviews.org/doku.php?id=tips:data-io:ms_windows

संपादित करें:

आप पर्ल चल रहा है, तो आप GData के वर्तमान संस्करण

require(gdata) 
installXLSXsupport() #now the example from help(read.xls) 
    # load the third worksheet, skipping the first two non-data lines... 
    if('XLSX' %in% xlsFormats()) # if XLSX is supported.. 
     data <- read.xls(exampleFile2007, sheet="Sheet with initial text", skip=2) 
data 
#----------------------- 
    X  X.1 D E. F G Factor 
1 NA FirstRow 1 NA NA NA Red 
2 NA SecondRow 2 1 NA NA Green 
3 NA ThirdRow 3 2 1 NA Red 
4 NA FourthRow 4 3 2 1 Black 
#------------------------ 
write.csv(data) 

इस पर एक मैक किया गया था और की जरूरत है: read.xlsx विकल्प को संबोधित करने के इस प्रश्न तक मैं हमेशा installXLSXsupport() चरण पर ठोकर खा रहा था क्योंकि मुझे हमेशा एक त्रुटि मिली। इस बार मैंने टर्मिनल कमांड लाइन से पर्ल शुरू किया, और मेरी महाद्वीप पर सीपीएएन दर्पण को परिभाषित करने के बाद, मेरी व्यक्तिगत कॉन्फ़िगरेशन स्थापित करने के बाद सफलता मिली, और मैंने पर्ल चलाना छोड़ दिया।

+0

यह एक महान संसाधन है, लेकिन मुझे लगता है कि आपका उत्तर और भी बेहतर होगा यदि आपने कुछ व्यक्तिगत टिप्पणियां शामिल की हैं जिन पर आपने उपयोग किए हैं और उनके साथ आपके अनुभव हैं। यह जानना मुश्किल है कि इस तरह की सूची में कहां से शुरू करना है। –

+0

जैसा कि आपने अपनी टिप्पणी में उल्लेख किया है, प्रश्नकर्ता की स्थिति के अनुरूप उत्तर देना मुश्किल होगा क्योंकि इस तरह के प्रस्तावों का कोई विवरण नहीं था। ऐसा लगता है कि एक अस्पष्ट सवाल का जवाब देने के लिए एक सामान्य प्रतिक्रिया बुलाई गई थी और उम्मीद है कि स्पष्टीकरण विवरण प्राप्त करें। –

+0

लिंक DWin के लिए धन्यवाद। यह प्रश्न वास्तव में XLConnect और XLSX संकुल के साथ एक समस्या से संबंधित है जो विशेष रूप से बड़ी .xlsx फ़ाइल को पढ़ने में असमर्थ है। यदि मैं स्प्रैडशीट्स को मैन्युअल रूप से एक CSV फ़ाइल में रूपांतरित करता हूं तो मेरा आर कोड ठीक काम करता है। इसलिए, प्रक्रिया को स्वचालित करने के लिए, मुझे एक आर पैकेज का उपयोग करने की आवश्यकता है जो बड़ी .xlsx फ़ाइलों को पढ़ सकता है और उन्हें .csv फ़ाइलों में परिवर्तित कर सकता है। अपना संदर्भ पढ़ने के बाद, मुझे लगता है कि मैं gdata को एक शॉट दूंगा। क्या आप मुझे यह समझने में मदद कर सकते हैं कि मैं "gdata" पैकेज का उपयोग कर .xlsx फ़ाइलों को कैसे परिवर्तित करता हूं? – AME

9

यहाँ सभी पत्रक को लिखने के लिए एक पाश है:

require(gdata) 
## install support for xlsx files 
installXLSXsupport() 
excelFile <- ("/full/path/to/excelFile.xlsx") 
## note that the perl scripts that gdata uses do not cope well will tilde expansion 
## on *nix machines. So use the full path. 
numSheets <- sheetCount(excelFile, verbose=TRUE) 

for (i in 1:numSheets) { 
    mySheet <- read.xls(excelFile, sheet=i) 
    write.csv(mySheet, file=paste(i, "csv", sep="."), row.names=FALSE) 
} 
1

अपडेट किया गया जवाब readxl पैकेज के आधार पर।

library("readxl") 

#function to read all sheets of a workbook 
read_excel_allsheets <- function(filename) { 
    sheets <- readxl::excel_sheets(filename) 
    x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X)) 
    names(x) <- sheets 
    x 
} 

sheetnames <- read_excel_allsheets("excelFile.xlsx") 
names(sheetnames) 
+0

सरल और अनुशंसित। 'read_excel (फ़ाइल)%>% data.table :: fwrite (fileout)' – Rob

संबंधित मुद्दे