Показать сообщение отдельно
Старый 21.05.2010, 13:35   #12  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Я бы воспользовался методом чтения из Excel (он подходит и для Spreadsheet), предложенным AndyD'ом здесь: Построчный импорт из Excel через COM . Скорость выполнения вас приятно удивит. Нужно будет скачать и зарегистрировать dll.

Что же касается того, как определить, что из ячеек изменилось (пересчиталось), то я бы воспользовался возможностью статического метода Set::difference, который может сравнить состав двух множеств и вернуть несовпадения (из первого множества). На псевдокоде это выглядит примерно так:
Код:
setРасхожденияПосле = Set::difference( setПослеОперации, setДоОперации );
Все множества - из контейнеров (а по физическому смыслу - ячеек) вида [строка,столбец,значение].

Перед грядущим изменением пробегаетесь по всем ячейкам и заполняете множество setДоОперации. После изменения опять пробегаетесь по всем ячейкам и заполняете множество setПослеОперации. Наконец, вычисляете множество setРасхожденияПосле (изменившиеся ячейки), которое затем циклом перебираете и записываете в нужную таблицу Аксапты (ну, или куда там вам надо).