0

我有一个现有的(打开的和空的)文件“D:\api.xlsx”,需要从 Matlab 与它通信。首先,我尝试从 A1:B2 读取值,并插入新值:

excelapp = actxserver('Excel.Application');
wkbk = excelapp.Workbooks;
wdata = wkbk.Open('D:\api.xlsx');
sheet = wdata.ActiveSheet;
range = sheet.get('Range', 'A1:B2');
range.Value
ans = 

    [NaN]    [NaN]
    [NaN]    [NaN]

range.Value = magic(2);
>> range.Value

ans = 

    [1]    [3]
    [4]    [2]

但是我没有看到excel中的变化。范围 A1:B2 保持为空。同样,当我手动将新值插入 excel 时,range.Value返回旧值。

所以,有两个问题:

  1. 如何将值插入从 Matlab 打开的 excel 文件中,以便新值立即可见?

  2. 如何进入 Matlab 更新的(来自 Excel)值?

4

3 回答 3

1

actxserver将创建一个新的、不可见的 Excel 副本,然后您需要将文件加载到该副本中,并明确地使其可见(您已经发现了这一点,正如您自己的答案所表明的那样)。

或者,如果您已经在 Excel 中打开了文件,则可以使用actxGetRunningServer连接到已预加载文件的 Excel 运行副本。

于 2012-08-08T15:38:25.347 回答
0

这解决了两个问题:

excelapp.Visible = 1;
于 2012-08-08T15:20:52.333 回答
0

没有 ActiveSheet.get 功能,尝试使用

range = sheet.Range("A1:B2")

然后阅读,你应该可以打电话

range.Value 

或者

range.Text
于 2012-08-08T15:33:41.700 回答