【发布时间】:2021-09-06 08:52:50
【问题描述】:
当尝试将 xlsx 文件加载到 R 时,使用 openxlsx::loadWorkbook
ExcelFile <- loadWorkbook(ReportFilePath) #ReportFilePath is a character variable containing path to the file
R 返回警告:
In sprintf("<Relationship Id=\"rId4\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\" Target=\"externalLinks/externalLink1.xml\"/>", :one argument not used by format '<Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink" Target="externalLinks/externalLink1.xml"/>'
该文件包含多张工作表,包含大量格式、隐藏范围、公式等。它是一个非常复杂的 xlsx 文件。该文件不包含与外部数据的任何连接,但它具有导航面板,其中包含指向文档内工作表的超链接。
保存工作簿后:
saveWorkbook(ExcelFile, ReportFilePath, overwrite = TRUE)
我看到大部分文本格式已被删除,被隐藏的范围现在被取消隐藏,反之亦然。此外,R 返回警告消息:
Warning messages:
1: In .self$setColWidths(i) : NAs introduced by coercion
2: In .self$setColWidths(i) : NAs introduced by coercion
3: In .self$setColWidths(i) : NAs introduced by coercion
4: In .self$setColWidths(i) : NAs introduced by coercion
5: In .self$setColWidths(i) : NAs introduced by coercion
6: In .self$setColWidths(i) : NAs introduced by coercion
我查看了 openxlsx 包的文档并搜索了警告,但似乎没有明显的解决方案。如何确保工作簿成功加载并保存?这些警告的根本原因是什么?
【问题讨论】:
-
您使用的是最新版本的 openxlsx 吗?如果更新不能解决问题,那么您可以尝试加载工作簿的单页版本以隔离导致问题的工作表。
-
@BluVoxe 我检查了,我正在使用最新版本的软件包。我还检查了消除工作表如何确定哪个工作表有问题,但即使我删除了所有现有工作表并使用一些随机数据创建了一个新工作表,没有格式,问题仍然存在。当我在全新的文件中重新创建相同的文件时,加载工作簿没有问题。很奇怪。
-
有趣...在那种情况下,我最好的猜测是这与创建原始工作簿的时间有关,也许 Excel 曾经使用 openxlsx 忘记考虑的某种不同格式.不幸的是,我发现 openxlsx 经常有一些故障排除,但如果你能让它工作,它就会非常强大。在没有看到您的实际工作簿的情况下,我认为我无法提供更多帮助,抱歉!
-
我发现那里有一些连接(Excel -> 数据 -> 连接)到不再存在的文件(并且具有这些连接的工作表已在一段时间前被删除,但它们仍然出现在连接列表)并且在删除这些连接之后,R 至少不会抛出错误,但它仍然会重置格式并混淆范围隐藏。