我有一个现有的(打开的和空的)文件“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
将返回旧值。
所以,有两个问题:
如何从Matlab中将值插入打开的Excel文件中,以便新值立即可见?
如何进入Matlab更新的(来自Excel)值?
答案 0 :(得分:1)
actxserver
将创建一个新的,不可见的Excel副本,然后您需要将该文件加载到其中并明确显示(您已经发现了这一点,因为您自己的答案已经明确了)。 / p>
或者,如果您已经在Excel中打开了文件,则可以使用actxGetRunningServer
连接到预先加载文件时已经显示的正在运行的Excel副本。
答案 1 :(得分:0)
这解决了这两个问题:
excelapp.Visible = 1;
答案 2 :(得分:0)
没有ActiveSheet.get函数,请尝试使用
range = sheet.Range("A1:B2")
然后阅读,你应该可以打电话
range.Value
或
range.Text