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、古い値が返されます。

したがって、2 つの質問があります。

  1. Matlabから開かれたExcelファイルに値を挿入して、新しい値がすぐに見えるようにする方法は?

  2. 更新された(Excelからの)値をMatlabに取得する方法は?

4

3 に答える 3

1

actxserverExcelの新しい非表示のコピーを作成し、ファイルをロードして明示的に表示する必要があります(あなた自身の答えが明らかになったので、これを発見しました)。

または、既に Excel でファイルを開いている場合は、 を使用actxGetRunningServerして、ファイルがプリロードされた状態で既に表示されている実行中の Excel のコピーに接続できます。

于 2012-08-08T15:38:25.347 に答える
0

ActiveSheet.get関数はありません。使用してみてください

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

次に、読むために、あなたは呼び出すことができるはずです

range.Value 

また

range.Text
于 2012-08-08T15:33:41.700 に答える
0

これにより、次の両方の問題が解決されます。

excelapp.Visible = 1;
于 2012-08-08T15:20:52.333 に答える