2016-12-30 42 views
0

我想從RODBC包中使用R中的odbcConnectExcel2007函數讀取excel文件。在閱讀單個文件時,它正在工作。但是,當我試圖使用for循環功能來運行,它拋出以下錯誤用於合併R中的文件的ODBC連接錯誤

3 stop(sQuote(tablename), ": table not found on channel") 
2 odbcTableExists(channel, sqtable) 
1 sqlFetch(conn1, sqlTables(conn1)$TABLE_NAME[1]) 

下面是代碼: -

file_list <- list.files("./Raw Data") 
file_list 

for (i in 1:length(file_list)){ 

    conn1 = odbcConnectExcel2007(paste0("./Raw Data/",file_list[i])) # open a connection to the Excel file 
    sqlTables(conn1)$TABLE_NAME 
    data=sqlFetch(conn1, sqlTables(conn1)$TABLE_NAME[1]) 
    close(conn1) 

    data <- data[,c("Branch","Custome","Category","Sub Category","SKU" 
         "Weight","Order Type","Invoice Date")] 


    if(i==1) alldata=data else{ 
    alldata = rbind(alldata,data) 
    } 

} 

我希望任何形式的幫助。 在此先感謝。

+0

什麼是第一個工作表的名稱是什麼?嘗試在循環內打印'file_list [i]'來查看哪個工作簿導致錯誤。 – Parfait

回答

0

我認爲它與從sqlTables(conn1)$ TABLE_NAME對象返回引號引起的表名混淆。嘗試通過刪除引號來操縱表名。事情是這樣的:

table <- sqlTables(conn1)$TABLE_NAME 
    table <- noquote(table) 
    table <- gsub("\'", "", table) 

然後就去做:

data=sqlFetch(conn1, table) 
+0

謝謝。現在正在工作。 – honey