2015-04-27 14 views
4

Я разрабатываю программное обеспечение на Excel как Приложение для Office, используя office.js.Как я могу получить доступ к измененным данным с помощью office.js

Для какого-то части, я закреплять на стол в Excel, чтобы проверить, если его данные изменены с помощью следующего кода:

myBinding.addHandlerAsync(Office.EventType.BindingDataChanged, onBindingDataChanged); 


function onBindingDataChanged(eventArgs) { 
    // eventArgs has just the binding info. 
    // I want to have selected cell row and column, and old and new data. 
} 

К сожалению, информация в eventArgs не достаточно для меня, чтобы обнаружить изменения. Стоит упомянуть, что для Office.EventType.Binding Выбор Изменено, есть много полезной информации, такой как startRow, startColumn, ....

Так что мой вопрос: Как я могу получить доступ к этой информации:

  • Changed Row
  • Измененного Колонок
  • старых данные
  • Новых данные

ответ

1

Я создал первенствовать приложение тоже. Вы можете получить текущие данные и сравнить их со старыми данными. Затем сохраните новые данные в виде старых данных.

var oldData = null; 

function onBindingDataChanged(eventArgs) { 
    var id = eventArgs.binding.id; 
    Office.select('bindings#'+id).getDataAsync(handleNewData); 
} 

function handleNewData(asyncResult) { 
    var newData = asyncResult.value; 

    if (oldData != null) { 
     // detect changes here 
    } 

    oldData = newData; 
); 
+0

Я привязываюсь ко всей таблице, поэтому хранить всю таблицу в «oldData» будет так дорого. Я хочу иметь только измененные данные, а не всю таблицу и обнаруживать изменения, сравнивая всю таблицу. – mehrandvd

+0

какого размера стола мы говорим? может быть, вы можете держать его в местном магазине? Когда вы хотите получить доступ к старым данным, вам нужно сохранить их где-нибудь ... – marcel