2017-07-28 80 views
0

我试图打开位于使用函数xlswritefig的网络路径上的工作簿。即该路径不以传统字母C:\开头。相反,它看起来如下:网络路径无法在Matlab中使用xlswritefig

\\networkmain\folder\to 

当我尝试打开该文件夹在Matlab上的Excel文件,我注意到,Excel将当前路径在路径的前面。即如果我在文件夹 Ç我目前:\ Matlab的\ Excel稍后尝试打开:

C:\Matlab\networkmain\folder\to 

我怎样才能防止这种情况发生,并重定向到网络路径?

+0

那么你遇到这个问题时你打电话的实际代码行是什么? – Wolfie

+0

'xlswritefig(hFig,'\\ networkmain \ folder \ to',sheetname,xlcell)' – JohnAndrews

+0

谢谢,我认为现在更清晰了。考虑向文件交换中的相关页面添加注释,以便作者知道这是一个可能导致意外行为的问题。 – Wolfie

回答

2

问题出在功能xlswritefig。为了解决此问题,步入功能和改变的代码下面的行(行86):

%**op = invoke(Excel.Workbooks, 'open', [pwd filesep filename]); 
op = invoke(Excel.Workbooks, 'open', filename); 

因此除去[pwd filesep]一部分。

1

我不认为在Matlab中支持UNC路径(至少没有用到)。最简单的方法是将您的文件夹映射到一个字母驱动器。可以在Windows资源管理器中执行此操作,但我倾向于在命令提示符下使用net usenet help use将显示语法

+0

谢谢,但对我无用,因为我确实需要使用网络路径。每台用户在此计算机上指向此网络路径的信件都不相同。 – JohnAndrews

+0

我注意到UNC路径可以很好的与其他Matlab函数一起使用。它只有在与Excel结合使用时才会中断。 – JohnAndrews

+0

字母驱动器从来都不好。 Matlab不是我的特长。如果你没有在Matlab中解决它,我建议一个外部脚本,将数据复制到本地临时文件夹,从Matlab内部调用 – Sam

1

MATLAB不支持UNC(网络)路径。但是,这是一种解决方法,它使用system命令设置(并取消设置)网络驱动器号。

% Execute system command to assign drive letter 
system('net use Z: \\networkmain\folder\to'); 
% Perform actions under this drive 
cd(Z:\); 
% ... 
% Unmount the drive 
system('net use Z: /delete'); 

您可以使用一些简单的循环来查找下一个可用的驱动器号,因为系统调用不应覆盖现有的驱动器号。

+0

谢谢。良好的workarround。但是,在函数本身中找到了解决方案,它将添加完整路径,如下所示:'[pwd filesep filename]'。我用文件名替换了这个。 – JohnAndrews

+1

所以这是一个文件交换功能的问题?考虑加入你自己的答案强调这一点 - 因为该功能甚至不是你的问题的焦点,所以未来的用户可能会认为这是一个更通用的问题。 – Wolfie