Octave:无法通过 COM 函数保存 excel 文件(COM 错误 0x800a03ec)
Octave: Unable to save excel file via COM function (COM error 0x800a03ec)
在 Octave 中,此代码:
excel.server = actxserver('excel.application');
excel.workbooks = excel.server.workbooks;
excel.workbook = excel.workbooks.add;
% excel.workbook.activate;
excel.workbook.SaveAs("a.xls");
导致在以下位置创建文件:C:/Users/kando/Documents/a.xls
,而:
excel.server = actxserver('excel.application');
excel.workbooks = excel.server.workbooks;
excel.workbook = excel.workbooks.add;
% excel.workbook.activate;
excel.workbook.SaveAs('C:/Users/kando/Documents/a.xls');
导致以下错误:
error: com_invoke: property/method invocation on the COM object failed with error `0x800a03ec' - lZ
因此我在指定绝对或相对路径时无法保存到任何地方。
(我是 运行 来自完全不同目录的代码,但 COM 服务器似乎只在用户的文档文件夹中运行。)
如何指定路径(以及如何在使用 COM 服务器功能时获得更详细的错误信息)?
您正在使用 unix 风格的路径分隔符(即正斜杠:/
)。
与 unix 系统相反,形式上 windows 路径分隔符是反斜杠,即 \
。因此,除非您确定要将其传递给的应用程序经过灵活编程以解释两者,否则您可能应该专门使用反斜杠以确保它在传递给 [时不会被视为 'malformed' 路径字符串 windows 申请。
换句话说,您应该使用 'C:\Users\kando\Documents\a.xls'
而不是 'C:/Users/kando/Documents/a.xls'
作为您的路径字符串。
更好的是,您应该使用 Octave 的 fullfile
工具,它会为您检测正确的文件分隔符(通过 filesep
函数),并从中构建一个 OS 兼容的路径字符串提供的部分,即
SaveFile = fullfile( 'C:', 'Users', 'kando', 'Documents', 'a.xls' );
excel.workbook.SaveAs( SaveFile );
在 Octave 中,此代码:
excel.server = actxserver('excel.application');
excel.workbooks = excel.server.workbooks;
excel.workbook = excel.workbooks.add;
% excel.workbook.activate;
excel.workbook.SaveAs("a.xls");
导致在以下位置创建文件:C:/Users/kando/Documents/a.xls
,而:
excel.server = actxserver('excel.application');
excel.workbooks = excel.server.workbooks;
excel.workbook = excel.workbooks.add;
% excel.workbook.activate;
excel.workbook.SaveAs('C:/Users/kando/Documents/a.xls');
导致以下错误:
error: com_invoke: property/method invocation on the COM object failed with error `0x800a03ec' - lZ
因此我在指定绝对或相对路径时无法保存到任何地方。
(我是 运行 来自完全不同目录的代码,但 COM 服务器似乎只在用户的文档文件夹中运行。)
如何指定路径(以及如何在使用 COM 服务器功能时获得更详细的错误信息)?
您正在使用 unix 风格的路径分隔符(即正斜杠:/
)。
与 unix 系统相反,形式上 windows 路径分隔符是反斜杠,即 \
。因此,除非您确定要将其传递给的应用程序经过灵活编程以解释两者,否则您可能应该专门使用反斜杠以确保它在传递给 [时不会被视为 'malformed' 路径字符串 windows 申请。
换句话说,您应该使用 'C:\Users\kando\Documents\a.xls'
而不是 'C:/Users/kando/Documents/a.xls'
作为您的路径字符串。
更好的是,您应该使用 Octave 的 fullfile
工具,它会为您检测正确的文件分隔符(通过 filesep
函数),并从中构建一个 OS 兼容的路径字符串提供的部分,即
SaveFile = fullfile( 'C:', 'Users', 'kando', 'Documents', 'a.xls' );
excel.workbook.SaveAs( SaveFile );