0

我是 R 的新手,甚至是在 Excel 中使用它的新手。我想在 .xls 文件中获取所有工作表名称(注释、权重、长度)的列表。您可以在下面看到我正在尝试的内容 - 问题是由于某种原因,输出末尾有一个 $ 美元符号,有时还用单引号括起来。

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$'"

我可以尝试清理这些字符,但我真的不知道该怎么做,因为引号格式不一致 - 有些工作簿是“系统表”,有些只是“表”。有人可以解释这些工作表之间的区别是什么,并告诉我如何重新创建“干净”的标签名吗?

4

2 回答 2

2

多亏了上述正确方向的推动,我设法使用正则表达式在所需的输出中获取工作表名称(没有任何标点符号)。

gsub("[[:punct:]]","",sqlTables(z)[,"TABLE_NAME"]) 
[1] "Sheet1" "Sheet2" "Sheet3"
于 2012-01-27T10:10:04.690 回答
0

我没有太多经验,RODBC但您是指clean的以下输出吗?

 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$"

诚然不雅……

于 2012-01-17T14:11:19.203 回答