2014-02-27 79 views
3

我正在尋找一種方法,使我的Matlab文件夾中的Excel文件通過雙擊該文件直接打開'Matlab外部'(即通過MS Excel在大多數情況下) ,而不是右鍵單擊並選擇「Open Outside Matlab」。Matlab:默認打開文件'Matlab外部'

內置在Matlab .xls文件閱讀器可以對大文件非常慢,並在文件中不必要的雙擊可以花費相當長的一段時間中,Matlab是反應遲鈍。

謝謝。

回答

3

當您單擊當前文件夾選項卡中的某個項目時,它實際上正在運行open命令,該命令本身會調用finfo來確定給定擴展名的「打開」意味着什麼。您可以通過在[~, openAction] = finfo(fullpath);之後直接創建一個open.m中的斷點並雙擊 - 當它遇到斷點時您將看到它返回openActionuiimport

理論上,您可以通過在路徑上創建函數openabc來創建擴展的自定義方法,其中abc是擴展名,應將其作爲openAction返回。

但是,如果我看看我的finfo.m它首先搜索所述函數,然後無論它是否找到它們,如果有內置方法它用標準行爲覆蓋它們。甚至還有評論:

% this setup will not allow users to override the default EXTread behavior

如果你願意在inbuilts渣土約,你可以做這樣的(第一次備份 - 這可能會影響其他的東西!)。我做到了暫時遮蔽現有finfo這樣的:

edit finfo.m(現在保存副本到當前文件夾)

定義openAction在循環後添加這些行(在我的版本,周圍線85) :

if any(strcmp(['.' ext], matlab.io.internal.xlsreadSupportedExtensions)) 
    openAction = 'winopen'; 
end 

從包含您的編輯finfo.m,類型which finfo -all的文件夾。你應該看到兩個副本,一個標記爲陰影的MATLAB。從當前文件夾窗口打開某些東西現在應該從外部打開Excel。

+0

它工作正常,但現在在我的路徑中使用'finfo.m',我無法通過雙擊打開Simulink文件。我收到一個錯誤'在打開的文件中,第163行'。重命名我的finfo.m,並因此取消原始修復問題。但我不明白爲什麼,因爲我打開的文件具有.slx擴展名。'finfo.m'必須位於Matlab文件夾中才能使Simulink工作? – raggot

+0

啊,看起來'openslx'和類似的私有函數在運行新的'finfo'時不會被看到。您可以重命名/備份原始文件,並將新版本放入MATLAB目錄,或者將原始finfo所在位置的「private」文件夾全部複製到新finfo所在的位置。 (儘管如此,我不能保證沒有別的東西會破壞)。 – nkjt

+0

因爲我沒有修改該文件夾的權利,所以我複製到我的項目文件夾中,就像在第二個建議中一樣。它的工作,謝謝。 – raggot

0

我不認爲有任何直接的方法可以做到這一點。它內置於MATLAB中,當你雙擊它們時,Excel文件將在導入工具中打開,並且無法改變它。

您可以通過將Excel文件的文件擴展名更改爲.xls.xlsx以外的文件來解決此問題。這將阻止MATLAB在導入工具中打開它。然後在Windows中,您可以將新的文件擴展名與Excel關聯。

+0

感謝您的支持。這是一個聰明的解決方法。 'xlsread'和'xlswrite'甚至可以用於新擴展。然而,這是非常不切實際的,特別是如果這些文件要與其他人分享。 – raggot

+0

@raggot是的,我同意。真正的答案不幸的是,沒有辦法做到這一點。 –