避免“重复”关闭请求:我知道如何读取Excel命名范围;示例在下面的代码中给出。这是关于Excel中的“真实”表。
Excel2007及更高版本具有表格的有用概念:您可以将范围转换为表格,并在排序和重新排列时避免麻烦。在Excel范围内创建表时,它将获得默认名称(德语版中的Tabelle1
,以下示例中为TableName
),但您还可以简单地命名表的范围({{ 1}});如Excel范围名称编辑器中的图标所示,这两个似乎被区别对待。
我无法从R中读取这些表格(严格意义上)。唯一已知的解决方法是使用CSV中间体,或将表格转换为正常的命名范围,当您使用列时会产生令人讨厌的不可逆副作用单元格引用中的名称;这些转换为A1表示法。
以下示例显示了问题。您的里程数可能因32/64位ODBC驱动程序和32/64位Java
的不同组合而有所不同TableAsRangeName
答案 0 :(得分:2)
表格定义存储在XML中是正确的。
sampleFile = "ExcelTables.xlsx"
unzip(sampleFile, exdir = 'test')
library(XML)
tData <- xmlParse('test/xl/tables/table1.xml')
tables <- xpathApply(tData, "//*[local-name() = 'table']", xmlAttrs)
[[1]]
id name displayName ref totalsRowShown
"1" "TableName" "TableName" "G1:I4" "0"
library(XLConnect)
readWorksheetFromFile(sampleFile, sheet = "ExcelTable", region = tables[[1]]['ref'], header = TRUE)
Name Age AgeGroup
1 Anton 44 4
2 Bertha 33 3
3 Cäsar 21 2
根据您的具体情况,您可以在XML文件中搜索适当的数量。
答案 1 :(得分:2)
我在 XLConnect 中添加了一些Excel表的初始支持。请在https://github.com/miraisolutions/xlconnect
上找到github上的最新更改以下是一个小样本:
require(XLConnect)
sampleFile = "ExcelTables.xlsx"
wb = loadWorkbook(sampleFile)
readTable(wb, sheet = "ExcelTable", table = "TableName")
请注意,Excel表格与表格相关联。因此,据我所知,可以将多个具有相同名称的表与不同的表相关联。出于这个原因,sheet
有一个readTable
- 参数。
答案 2 :(得分:0)
稍后补充:
readxl::readxl
可以读取“真实”表格,当您想要读取数据帧/元组时,它可能是最麻烦的解决方案。
** @Jamzy评论后** 我再次尝试,无法读取命名范围。那么假阳性或假阴性现在???