如何用R读取含Pivot table的Excel文件?无原始数据时如何获取源数据?
如何用R读取Excel数据透视表的原始数据源?
嘿,这个问题我之前帮朋友处理过,其实有几个实用的办法,分两种场景来说:
场景1:你可以直接操作Excel文件
这是最直接的方式,先从Excel里导出原始数据再用R读取:
- 选中你的数据透视表,右键点击,选择「显示详细信息」
- Excel会自动生成一个新的工作表,里面就是支撑这个透视表的完整原始数据集
- 把这个新工作表另存为单独的Excel文件或者CSV格式,之后用R的常用包读取就行,示例代码:
library(readxl) # 替换成你导出的文件路径 raw_data <- read_excel("导出的原始数据.xlsx")
场景2:想直接用R读取,不用手动操作Excel
可以借助openxlsx包直接访问Excel存储的透视表缓存(这是Excel保存透视表时同步存储的原始数据快照),步骤如下:
- 先安装并加载包:
install.packages("openxlsx") library(openxlsx) - 加载目标Excel工作簿:
# 替换成你的文件路径 wb <- loadWorkbook("带透视表的文件.xlsx") - 提取透视表的缓存数据:
这样# 替换成透视表所在的工作表名称 pivot_cache <- getPivotCache(wb, sheet = "透视表工作表名") raw_data <- pivot_cache$getData()raw_data就是你需要的原始数据了。要注意:这个缓存是透视表创建或最后一次刷新时的快照,如果之后原始数据有更新但透视表没刷新,缓存数据可能不是最新的,但如果你的透视表是基于本地Excel数据的,这个方法完全靠谱。
额外提醒
如果你的透视表是连接到外部数据库、SharePoint这类外部数据源的,缓存里可能只有聚合后的汇总数据,这时候还是得回到场景1的方法,或者检查Excel里透视表的「数据源设置」来确认原始数据的位置。
内容的提问来源于stack exchange,提问作者pApaAPPApapapa
相关产品推荐
相关产品推荐

