【问题标题】:Octave: Unable to save excel file via COM function (COM error 0x800a03ec)Octave:无法通过 COM 函数保存 excel 文件(COM 错误 0x800a03ec)
【发布时间】:2021-05-20 19:45:59
【问题描述】:

在 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 服务器函数时获得更详细的错误信息)?

【问题讨论】:

  • 这是什么包?我不认识命令。此外,Windows 通常使用反斜杠作为文件分隔符,而不是斜杠。试试C:\Users\kando\Documents\a.xls,也许就这么简单。或者更好的是,使用fullfile
  • 另外,你得到的错误似乎是一个特定的 excel 错误,因为缺少东西:stackoverflow.com/a/11016110/4183191
  • 是反斜杠。 .. 杀我。你不知道我做了多少挖掘和阅读。请把它写成答案,我会标记是这样有人可能会找到该错误代码并看到答案也可以是反斜杠。
  • 哈哈哈,会的,很高兴听到它对 xD 有帮助

标签: excel com octave


【解决方案1】:

您使用的是 unix 样式的路径分隔符(即正斜杠:/)。

与 unix 系统相反,正式的 windows 路径分隔符是反斜杠,即\。因此,除非您确定将其传递给的应用程序经过灵活编程以便解释两者,否则您可能应该专门使用反斜杠以确保在传递给 Windows 应用程序时不会将其视为“格式错误”的路径字符串。

换句话说,您应该使用'C:\Users\kando\Documents\a.xls' 而不是'C:/Users/kando/Documents/a.xls' 作为路径字符串。

更好的是,您应该使用 octave 的 fullfile 工具,它会为您检测正确的文件分隔符(通过 filesep 函数),并从提供的部分构建一个与操作系统兼容的路径字符串,即

SaveFile = fullfile( 'C:', 'Users', 'kando', 'Documents', 'a.xls' );
excel.workbook.SaveAs( SaveFile );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 2016-07-28
    • 2021-08-09
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多