2016-12-14 193 views
0

我試圖在一個循環中讀取多個csv文件,然後對所有這些文件執行一些分析。在循環中使用xlsread時發生matlab錯誤

我使用MatlabR2015b和Excel 2016

的問題是,在第二次調用xlsread我得到以下錯誤:

>>xlsread('R:\Experiments\ResoFreq_vis_BEH\TapFlick_vis_BEH\Data\s01_rr\1_fingerTapping_s01_rr.csv') 

Error using xlsread (line 251) 

沒有解釋任何消息,沒有什麼。 一些調試,我發現它失敗在下面的命令後:在openExcelWorkbook.m文件,該文件是某處xlsread的堆棧

Excel.workbooks.Open(filename, 0, readOnly); 

我發現很少人有同樣的問題,他們的解決辦法是強制EXCEL32過程中使用下面的代碼以關閉:

[~, computer] = system('hostname'); 
[~, user] = system('whoami'); 
[~, alltask] = system(['tasklist /S ', computer, ' /U ', user]); 
excelPID = regexp(alltask, 'EXCEL.EXE\s*(\d+)\s', 'tokens') 
for i = 1 : length(excelPID) 
    killPID = cell2mat(excelPID{i}); 
    system(['taskkill /f /pid ', killPID]); 
end 

然而,這並不爲我工作。

somemore挖我試圖手動看看CSV即時試圖打開後,在調試時,在Excel.workbooks.Open呼叫在斷點處停止後的意思,我用:

actxserver('Excel.Application') 
ans.Workbooks.Open(filename) 

這給了我下面的錯誤:

Error using Interface.000208DB_0000_0000_C000_000000000046/Open 

當通過matlab檢查器查看excel過程時,它與工作簿相關聯。

這就是我設法找到的與我的問題相關的所有信息。

目前唯一適用於我的是運行xlsread,然後手動關閉任務管理器中的excel進程,然後再次運行它,直到獲得所有數據,然後進行分析,這是不可能的考慮我需要加載的文件數量。

我無法使用csvread,因爲我的文件有混合類型,並且我嘗試過的每一個其他函數都沒有正確讀取csvs (我有一個看起來像這樣的字段「[,...,]」字段不斷被解釋爲在每個函數中的多行,除了xlsread) 因此我覺得我沒有選擇,只能以某種方式修復xlsread。

我很樂意提供解決此問題所需的信息

謝謝。

+0

您是否在同一個Excel文檔上執行'xlsread'? – bushmills

+0

nope,每次不同的文件 – NivPgir

回答

0

你應該使用csvread而不是xlsread,監守xlsread剛讀。 xls和。 xlsx文件。

+0

正如我所提到的,我不能使用csvread導致我的文件有混合的數據類型 – NivPgir

+0

是的,所以將您的csv文件轉換爲xlsx格式 –

+0

這將如何幫助我?我仍然需要爲所有這些.xlsx文件調用xlsread,這對我不起作用。 – NivPgir

相關問題