【问题标题】:How to ignore hidden data when importing from Excel从 Excel 导入时如何忽略隐藏数据
【发布时间】:2013-10-03 00:41:59
【问题描述】:

我有一组要导入到R 的 excel 文件。

这些文件包含我想忽略的隐藏数据——例如,根本不导入它,或者导入它时带有一个标志,表明它是隐藏的,以便我可以删除它。

文件包含两种类型的隐藏数据:

  • 完整的工作表已隐藏
  • 工作表中的特定行被隐藏。

有没有办法识别excel中的数据何时隐藏?

现在我正在使用gdata 包,但我很乐意使用XLConnect 或其他包

示例代码:

library(gdata)
xlsfile <- "test.xls"

# grab all the sheet names. 
# This is giving me both hidden & non-hidden sheets.  I would like only the latter
sheets <- sheetNames(xlsfile)

# read in the xls file, by sheet 
xlData <- 
  lapply(sheets, function(s) 
      read.xls(xlsfile, sheet=s, stringsAsFactors = FALSE))

如果需要,我可以创建一个虚拟的xls 文件并发布它。

【问题讨论】:

  • 我为被困在这个地狱的圈子里而感到同情。我认为从另一端执行此操作可能更容易,即编写一个将非隐藏数据导出为 CSV 的 VBA 脚本。但我不能提供更具体的建议,因为我原则上会拒绝这些文件。
  • 您可能已经知道这一点,但您可以在复制数据之前检查是否可见:如果 Sheets(ws).Visible = false 然后复制...
  • @PortlandRunner visible 标志是(或可能)导出的吗?
  • 谢谢@Roland。如果只拒绝文件是一种选择,但里面的数据很关键。走 VBA 路线可能最终是最直接的

标签: r excel gdata xlconnect


【解决方案1】:

XLConnect 有一个很好的函数,叫做isSheetHidden,它可以满足你的需求。假设Sheet2 是隐藏的:

library(XLConnect)
xlsfile <- "Book1.xls"
wb <- loadWorkbook(xlsfile, create = TRUE)
isSheetHidden(wb, "Sheet1") # FALSE
isSheetHidden(wb, "Sheet2") # TRUE

gdata 中,您必须编写自己的函数来调用底层 perl 包来访问工作表属性,但这是可能的。

【讨论】:

  • 太好了,谢谢!现在如果他们有类似的行...?
  • 是的,isHidden 不适用于行。所以,XLConnect 包装了 HFFS(可怕的电子表格格式),这是一个不错的 Java 库。 XLConnect 包装器是 posted to GithubAPI for HFFS seems to indicate that they have a getHidden for rows。稍微编辑包装器可能并不难,因此您可以公开getHidden 函数。你甚至可以要求作者为你做这件事:)
  • 您可以使用rcom rcom.univie.ac.at 隐藏行导入
  • @Hansi 你能举个例子吗(也许作为答案?)
猜你喜欢
  • 1970-01-01
  • 2023-01-27
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 2020-07-19
  • 2016-09-06
  • 2015-08-25
  • 1970-01-01
相关资源
最近更新 更多