121_Power Query 之 R.Execute 的 read.xlsx & ODBC

2026-04-16 17:58:26

一、问题

pq 在用 Excel.Workbook 取一些 Excel 早期版本(.xls后缀)的文件时候,报错:DataFormat.Error: 外部表不是预期的格式。

二、解决方案

方案1

如果文件少可以另存为 .xlsx 版本即可用 Excel.Workbook 读取,也有批量 xls 转 xlsx 的工具(可自行搜索)

方案2

在不更改文件版本的情况下,可以用 R.Execute 调用 R 脚本读取也是非常简单的。

情况1:单个文件

let
    源 = R.Execute(
        "library(xlsx)
        data <- read.xlsx(file = 'C:\\Users\\pyj\\Desktop\\test\\demo1.xls',1, startRow=5,colIndex=c(1),header = FALSE,encoding = 'UTF-8')")
in
    源

情况2:多个文件

let
    源 = R.Execute(
        "library(xlsx)
            #设定文件夹路径
        setwd('C:\\Users\\pyj\\Desktop\\test')
        filenames <- dir()
            #数据框
        data <- data.frame()
        for (i in filenames){
            #循环file
        path <- paste0(getwd(),'\\',i)
 
            # 读取并合并数据
 
        data <- rbind(data,read.xlsx(file = path,1, startRow=5,colIndex=c(1),header = FALSE,encoding = 'UTF-8'))}"
    )
in
    源

三、总结

1、安装 R 的 xlsx 包;

2、注意 read.xlsx 参数的使用;

#官方帮助
read.xlsx(file, sheetIndex, sheetName=NULL, rowIndex=NULL,
  startRow=NULL, endRow=NULL, colIndex=NULL,
  as.data.frame=TRUE, header=TRUE, colClasses=NA,
  keepFormulas=FALSE, encoding="unknown", password=NULL, ...)

3、注意:rowIndex,colIndex 的参数可以使向量指定行列,如:c(1,3,4),c(5:10);支持 pq 中 list 拼接。

4、在补充一个用 ODBC 读取的。

下载内容

下载链接:点击下载

提取码:846j

Power QueryodbcRpq