2012-01-17 67 views
0

我是新來的R,甚至更新的使用Excel。我想在.xls文件中獲得所有工作表名稱(註釋,權重,長度)的列表。您可以在下面看到我正在嘗試的內容 - 問題在於輸出由於某種原因而在最後有一個$美元符號,並且有時也被單引號包圍。如何使用RODBC獲取R中的Excel工作表選項卡名稱的「乾淨」列表?

FileToImport <- "C:\\folder\\filetoimport.xls" 

z <- odbcConnectExcel(FileToImport, readOnly = TRUE) 

sqlTables(z) 
TABLE_CAT TABLE_SCHEM   TABLE_NAME TABLE_TYPE REMARKS 
1 C:\\folder\\filetoimport.xls <NA>  Notes$ SYSTEM TABLE <NA> 
2 C:\\folder\\filetoimport.xls <NA> 'Weights$'  TABLE <NA> 
3 C:\\folder\\filetoimport.xls <NA> 'Lengths$'  TABLE <NA> 

SQLTABLES(Z),「TABLE_NAME」]

[1] "Notes$"    "'Weights$'" "'Lengths$'" 

我可以嘗試了清潔這些字符,但我真的不知道如何去這一點,因爲引號格式不一致 - 一些工作簿是「系統表」,有些只是「表」。有人可以解釋這些工作表之間的區別是什麼嗎?並且讓我知道如何重新創建「乾淨」的tabnames?

+0

我幾乎沒有使用Excel/RODBC的經驗,但是工作簿與工作表完全相同嗎?爲了清除名字,你可以嘗試正則表達式。 – 2012-01-17 12:32:39

+0

對不起,我只是在整個過程中討論工作表。我想到了正則表達式,但我無法寫出它們!任何人都可以給我一個提示如何從名稱中刪除單引號和美元符號嗎? – SWilliams 2012-01-17 13:34:42

+0

我制定瞭如何執行reg exp來獲得所需的輸出,謝謝。 gsub(「[[:punct:]]」,「」,sqlTables(z)[,「TABLE_NAME」])「Sheet1」「Sheet2」「Sheet3」 – SWilliams 2012-01-17 14:28:55

回答

2

由於在正確的方向上微調,我設法使用正則表達式來獲得在工作表名稱所需的輸出(沒有任何標點符號)。

gsub("[[:punct:]]","",sqlTables(z)[,"TABLE_NAME"]) 
[1] "Sheet1" "Sheet2" "Sheet3" 
0

我對RODBC沒有太多的經驗,但是您的意思是以下輸出通過乾淨

data.frame(sqlTables(z))$TABLE_NAME 
[1] "Sheet1$" "Sheet2$" "Sheet3$" "ZRDaten1" 

,如果你保存在一個矢量說b您可以z[i]訪問它們。如果你只需要一個特定類型的怎麼樣:

na.omit(ifelse(data.frame(sqlTables(z))$TABLE_TYPE=='SYSTEM TABLE', data.frame(sqlTables(z))$TABLE_NAME, NA)) 
[1] "Sheet1$" "Sheet2$" "Sheet3$" 

誠然unelegant ....

+0

感謝努力,但我發現我正在尋找與上面的正則表達式的建議。 – SWilliams 2012-01-17 14:26:08

相關問題